comhon-project/template-renderer 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

comhon-project/template-renderer

最新稳定版本:v1.4.2

Composer 安装命令:

composer require comhon-project/template-renderer

包简介

PHP library that permit to render templates and permit to define which renderer to use

README 文档

README

  • Your library needs to render templates (example: email template) but you don't want to implement it ?
  • You want your template renderer to be customizable by developers that use your library ?

This library is made for that! it permit to render templates and permit to define which renderer to use. This library is generally intended for Laravel projects but you can use it even if you are not implementing a Laravel project.

There is only one renderer available by default (twig), but you can add your own by defining your own driver.

Installation

You can install the package via composer:

composer require comhon-project/template-renderer

For laravel project, you can publish the config file with:

php artisan vendor:publish --tag="template-renderer-config"

Usage

Laravel project

$rendered = Template::render(
    'Hello {{ user.name }} !!!',
    ['user' => ['name' => 'john doe']]
);

echo $rendered;
// output: Hello john doe !!!

Non Laravel project

use Comhon\TemplateRenderer\TemplateManager;

// the instantiation mechanism should be implemented in a specific place
// and called only one time (TemplateManager should be used as singleton)
$templateManager = new TemplateManager($app);

$rendered = $templateManager->render(
    'Hello {{ user.name }} !!!',
    ['user' => ['name' => 'john doe']]
);

echo $rendered;
// output: Hello john doe !!!

Adding custom renderer driver

First, you will have to define a class that implements Comhon\TemplateRenderer\Renderers\RendererInterface

<?php
use Comhon\TemplateRenderer\Renderers\RendererInterface;

class MyTemplateRenderer implements RendererInterface
{
    public function setDefaultLocale(string $locale) {}
    public function setDefaultTimezone(string $timezone) {}
    public function validate(string $template) {}
    public function render(
        string $template,
        array $replacements,
        ?string $defaultLocale = null,
        ?string $defaultTimezone = null,
        ?string $preferredTimezone = null
    ): string {}
}

Then, you will have to register your driver by calling the Template facade's extend method:
(In laravel project, you may call this function in the boot method of your AppServiceProvider)

    Template::extend('my-renderer', function ($app) {
        return new MyTemplateRenderer($app);
    });

In laravel project, you can set your renderer as the default one. To do so, modify the default_renderer value in the config file.

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Credits

License

The MIT License (MIT). Please see License File for more information.

统计信息

  • 总下载量: 1.25k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-11-24