fenom-template / fenom

Template Engine for PHP. Maintainers wanted!
Other
446 stars 108 forks source link

Многоуровневое наследование #138

Closed sleuthhound closed 9 years ago

sleuthhound commented 9 years ago

Подскажите, возможно ли многоуровневое наследование с использованием {extends}, {block} и {parent}? Например, три шаблона:

{* root.tpl *}
{block 'header'}
root header
{/block}
{* main.tpl *}
{extends 'root.tpl'}
{block 'header'}
{parent}
main header
{/block}
{* second.tpl *}
{extends 'main.tpl'}
{block 'header'}
{parent}
second header
{/block}
bzick commented 9 years ago

Да, конечно.

sleuthhound commented 9 years ago

Я правильно понимаю, что результат работы должен быть такой:

root header main header second header

? В моем случае на выходе получается:

main header second header

Пример использования:

include '../vendor/Fenom/src/Fenom.php';

Fenom::registerAutoload();

$fenom = new Fenom(new Fenom\Provider('../application/Views/Template'));
$fenom->setCompileDir('../application/Caches');
$fenom->setOptions(array(
    'auto_reload' => true,
    'force_include' => true
));
echo $fenom->fetch('second.tpl');
bzick commented 9 years ago

Это бага, исправил (2.4.6)

P.S. следующие 3 строчки

$fenom = new Fenom(new Fenom\Provider('../application/Views/Template'));
$fenom->setCompileDir('../application/Caches');
$fenom->setOptions(array(
    'auto_reload' => true,
    'force_include' => true
));

можно заменить на одну

$fenom = Fenom::factory('../application/Views/Template', '../application/Caches', array(
    'auto_reload' => true,
    'force_include' => true
))
maxisoft-git commented 9 years ago

Что-то после исправления этого бага при включении опции auto_strip шаблон вообще не формируется, файл вообще пустой получается. :)

sleuthhound commented 9 years ago

Спасибо за фикс. С auto_strip странно.