У меня есть компонент, который уже долгое время создает и визуализирует меню. Теперь я должен предусмотреть специальный случай, который разделяет одну и ту же логику, но требует немного работы перед тем, что уже существует. То, что я хотел бы сделать, это создать новый компонентный компонент, который будет выполнять необходимую предварительную обработку, punt для общей логики для завершения вычислительной стороны, а затем визуализировать через существующий шаблон частично (когда все будет сказано и сделано, это все еще меню, например любой другой - для его создания требуется немного больше работы).Symfony: разделение частичных действий между двумя компонентами
К сожалению, я не могу найти способ сделать это.
Вот разбивка файла/код высокого уровня, что я прямо сейчас:
#
# navigation/actions/components.class.php
#
public function executeMenu() {
/**
* This method runs most of the menus and does most of the work
* that's required of the special case.
*
* Once complete, of course, it renders through navigation/templates/_menu.php
*/
}
public function executeSpecialMenu() {
/**
* Do some preparatory work and delegate to executeMenu()
* to finish up and render the menu. I'd like this action
* to render through the _menu.php partial as well.
*/
}
#
# templates/layout.php
#
<?php include_component('navigation', 'menu', array('menu' => 'Entity Type')) ?>
/** SNIP */
<?php include_component('navigation', 'SpecialMenu') ?>
Любой вклад будет высоко ценится.
Это решение проблемы на функциональном уровне, и это было решение, которое я поставил на место изначально. Для меня это действительно здорово, поэтому я надеялся, что это будет более хирургическое решение. Я выбрал прямой 'include()', хотя, чтобы переменные несли, хотя и мне не пришлось бы менять 2 файла каждый раз, когда переменная добавлялась/удалялась. –
Да, 'sfComponents' не обеспечивает простой способ сделать это, так что вы застряли с вашим' include() ', который является самым простым и надежным способом для этого. –