Эта был пример логики не в контролере, а в шаблонах для подключения подшаблонов.AmdY
ага, только так контроллер делает то, чем должен заниматься view.
и я так делаю не вижу как это противоречит концепции блоков - как по мне даже лучше реализует.подшаблонов вызывать вывод прямо в шаблоне
почему?но вложенные блоки в функции не превратить. что и требовалось доказать.
фетчить себя для того, чтобы не дублировать шаблон, например, в выводе результатов опросов через ajax после голосования и обычным спискомАвтор оригинала: fixxxer
и кстати нахрена фетчить самого себя? =) это такая замена layout-ов, которые в тех же django/twig делаются наследованием?![]()
это иногда необходимо для многоуровнего меню в виде дерева, когда уровни в шаблоне невложенные, а просто в виде блоков один за другимАвтор оригинала: fixxxer
не, себя в смысле
{{ fetch('/block') }}
<?
if ($list) {
?>
begin list <?= $a ?>
<?
if (is_array($list)) {
foreach ($list) {
?>
something <?= $b ?>
<?
}
} else {
?>
something <?= $b ?>
<?
}
?>
end list <?= $c ?>
<?
}
?>
по этому шаблонуАвтор оригинала: fisher
я ошибся! HraKK прав. я рассматривал случай с прекомпиляцией, без него не интересно. когда происходит прекомпиляция, блок очевидно должен бы превартиться в if или foreach. и дальше у меня было "вложенные блоки в функции не превратить" - это логически неверно и потому, что превратить, и потому, что не надо функции.
например, вложенные блоки
{{ BEGIN list }}
begin list {{ $a }}
{{ BEGIN item }}
something {{ $b }}
{{ END item}}
end list {{ $c }}
{{ END list }}
могут быть превращены в такой прегенеренный код (возможно с кодом для элемента можно поэлегантнее без дублирования - не суть)
и затем фетч может быть осуществлен такКод:<? if ($list) { ?> begin list <?= $a ?> <? if (is_array($list)) { foreach ($list) { ?> something <?= $b ?> <? } } else { ?> something <?= $b ?> <? } ?> end list <?= $c ?> <? } ?>
- приготовить специальную структуру для итераций, положить в стек
- просто заинклюдить с тем что по стеку: взали со стека итерацию, в отдельную функцию передали чтобы скоп был чистый, заэкспортировали итерации, закспортировали глобальные, и просто инклюд шаблона
- вернуться по стеку к предыдущим значениям
>>ну почему не превратить, я вот пример подхода к вопросу привел
да, я ни хрена не понял в этом. это похоже на то что я написал?
array['list'][0]['item'][0]['b'] = 1;
array['list'][0]['item'][1]['b'] = 2;
array['list'][0]['item'][2]['b'] = 3;
array['list'][0]['item'][3]['b'] = 4;
можноАвтор оригинала: fixxxer
а если ограничиться php 5.3 то кстати можно просто наставить меток и делать goto![]()