#zend-framework #layout
#zend-framework #макет
Вопрос:
Я пытаюсь реализовать систему шаблонов в zend framework.
Я в основном использую для размещения всех частичных файлов и вариантов шаблонов в одном файле, но по мере увеличения количества шаблонов это становится крайне неуправляемым.
например
/application/layout/script/template1partial-banner.phtml
/application/layout/script/template1partial-footer.phtml
/application/layout/script/template1variation1.phtml
/application/layout/script/template1variation2.phtml
/application/layout/script/template2variation1.phtml
/application/layout/script/template2variation2.phtml
Вы можете видеть, насколько это неуправляемо
, поэтому я хочу управлять им в рамках этой структуры
/application/layout/script/template1/partial/banner.phtml
/application/layout/script/template1/partial/footer.phtml
/application/layout/script/template1/variation/1.phtml
/application/layout/script/template1/variation/2.phtml
/application/layout/script/template2/partial/banner.phtml
/application/layout/script/template2/partial/footer.phtml
/application/layout/script/template2/variation/1.phtml
/application/layout/script/template2/variation/2.phtml
Ну, определение частичных элементов не проблема, вы можете просто использовать $this -> render($this -> getTemplateName()."/partials/banner.phtml");
Это вариации, это основная проблема, которую я использовал $this -> _helper -> layout -> setLayout('template1variation1');
раньше, но для новой вещи я не могу ее использовать сейчас.
Как я могу сделать что-то подобное?
Ответ №1:
Вы также можете определить полный путь в своей layout
функции.
$this->_helper->layout->setLayout('template1/partial/banner');
Еще один способ выполнить эту задачу — отключить макет для вашего текущего действия, а затем отобразить его в любой файл phtml. Например, первый disable
макет для текущего действия
$this->_helper->layout->disableLayout();
Затем просто отобразите любой HTML-файл следующим образом
$this->render("complete path to your phmtl file");