Closed larfeus closed 6 years ago
Шаблон:
{block 'b1'} <h3>test</h3> {/block} {block 'b2'} {paste 'b1'} {/block}
Блок b1 выводится только один раз. Тег paste не работает.
Компиляция тега в Fenom\Compiler.php
/** * Tag {paste ...} * * @param Tokenizer $tokens * @param Tag $tag * @return string */ public static function tagPaste(Tokenizer $tokens, Tag $tag) { $name = $tokens->get(T_CONSTANT_ENCAPSED_STRING); $tokens->next(); // DEBUG dd($tokens, $tag->tpl->blocks, $name); if(isset($tag->tpl->blocks[$name])) { return "?>".substr($tag->tpl->blocks[$name]["block"], 1, -1)."<?php "; } else { return ""; } }
Получаем:
Tokenizer {#24 ▼ +tokens: array:2 [▶] +p: 2 +quotes: 0 -_max: 1 -_last_no: 1 } array:1 [▼ "b1" => array:4 [▶] ] "'b1'"
В переменную $name название блока попадает с кавычками (см. T_CONSTANT_ENCAPSED_STRING http://php.net/manual/ru/tokens.php)
На рабочем проекте временное решение такое:
/** * Tag {paste ...} * * @param Tokenizer $tokens * @param Tag $tag * @return string */ public static function tagPaste(Tokenizer $tokens, Tag $tag) { $tag->tpl->parsePlainArg($tokens, $name); if(isset($tag->tpl->blocks[$name])) { return "?>".substr($tag->tpl->blocks[$name]["block"], 1, -1)."<?php "; } else { return ""; } }
Вам бы оформить merge request, так было бы понятнее что меняете
Наверное, эту issue уже можно закрыть. https://github.com/fenom-template/fenom/pull/274
Шаблон:
Блок b1 выводится только один раз. Тег paste не работает.
Компиляция тега в Fenom\Compiler.php
Получаем:
В переменную $name название блока попадает с кавычками (см. T_CONSTANT_ENCAPSED_STRING http://php.net/manual/ru/tokens.php)
На рабочем проекте временное решение такое: