https://github.com/ajur-media/template https://packagist.org/packages/ajur-media/template
require_once __DIR__ . '/vendor/autoload.php';
$SMARTY = new Smarty();
$SMARTY->setTemplateDir( __DIR__ );
$SMARTY->setCompileDir( __DIR__ . '/cache/');
$SMARTY->setForceCompile(true);
// Global + inner templates
$global = new \AJUR\Template($SMARTY, $_REQUEST);
$global->setTemplate('1.tpl');
$inner = new \AJUR\Template($SMARTY);
$inner->setTemplate("2.tpl");
$inner->assign('value_1', 'FOO');
$inner->assign('value_2', 'BAR');
$global->assign("content", $inner->render());
echo $global->render();
// Global + include secondary template:
$global = new \AJUR\Template($SMARTY);
$global->setTemplate('0.tpl');
$global->assign("file", "2.tpl");
$global->assign('value_1', 'FOO');
$global->assign('value_2', 'BAR');
echo $global->render();
// JSON
$global = new \AJUR\Template($SMARTY);
$global->assign("file", "2.tpl");
$global->assign('value_1', 'FOO');
$global->assign('value_2', 'BAR');
// or use helper
$global->assignJSON([
'file' => '2.tpl',
'value_1' => 'FOO',
'value_2' => 'BAR',
]);
$global->setRenderType(\AJUR\Template::CONTENT_TYPE_JSON);
echo $global->render();
Для корректной работы плагина нужен параметр opcache.save_comments = 1
в php.ini
Передача параметров в (регистрируемые) плагины:
Есть два способа и зависят они от способа регистрации функции:
А) через перечисление аргументов (причем опущенные аргументы принимают значение по умолчанию)
{$size|size_format:decimals:separator:separator}
Тогда функция должна быть определена так:
public static function size_format(int $size, int $decimals = 0, string $decimal_separator = '.', string $thousands_separator = ','):string;
Б) через массив аргументов
{$size|size_format:[3,',','-']}
Тогда функция должна быть определена иначе:
public static function sf(int $size, array $params):string
{
$decimals = $params['decimals'] ?? 3;
$decimal_separator = $params['decimal_separator'] ?? '.';
$thousands_separator = $params['thousands_separator'] ?? ',';
// ...
}
Используется так:
{sum a=11 b=14}
Метод должен быть определен ТОЛЬКО так:
function sum($params)
{
return ($params['a'] ?? 0) + ($params['b'] ?? 0);
}
@todo: