CakePHP Можно ли передать динамические данные элементу для использования на всем сайте?

В этом проекте, над которым я работаю, заголовок содержит элементы меню, в которых есть раскрывающиеся списки, показывающие соответствующие элементы для выбранного элемента меню. Эти элементы предназначены для извлечения прямо из базы данных, поэтому элементы можно добавлять/удалять, когда это необходимо.

Мой вопрос: как это будет работать, если я использую Element с CakePHP? Я понимаю, что элемент — это немного повторно используемого кода, но я не уверен, где должен быть размещен логический код? Использует ли элемент свой собственный контроллер или мне нужно добавить код к каждому отдельному контроллеру, который активен в проекте?

Ваше здоровье!


person mickburkejnr    schedule 23.02.2012    source источник


Ответы (3)


у меня есть элемент для динамического меню с компаниями, которые представляет страница, и я использую его в макете, так как его нужно показывать на каждой странице.

Что я делаю, так это следующее: в контроллере приложения в beforeFilter (вы можете использовать перед рендерингом или чем-либо, что вызывается до рендеринга представлений) я делаю логическую часть. что-то вроде этого

$this->loadModel('Company');
$companies = $this->Company->find('all');
$this->set('companies', $companies);

с этим вы можете использовать его в своих представлениях/макете/элементах

надеюсь, это поможет вам :)

person api55    schedule 23.02.2012

Вы будете использовать этот элемент для той части представления, которую хотите отобразить на каждой странице. Вы не хотите разрывать MVC и смешивать бизнес-логику в представлениях.

Внутри вашего элемента сделайте вызов действия контроллера, используя requestAction(). Прочитайте это http://book.cakephp.org/2.0/en/views.html#elements это объяснит вам, как использовать requestAction().

Похоже, вы хотите создать меню или что-то в этом роде. Поэтому вызовите контроллер, который занимается меню, и получите данные из модели.

person floriank    schedule 23.02.2012

Элемент — это, по сути, мини-представление, которое может быть включено в другие представления. Вы можете создавать контроллеры для элементов или добавлять свою логику к контроллеру, включающему элемент. http://book.cakephp.org/1.3/view/1081/Elements

person AJFMEDIA    schedule 23.02.2012