CakePHP Можно ли передавать динамические данные элементу для использования на всем сайте? - PullRequest
2 голосов
/ 23 февраля 2012

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

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

Ура! * * 1005

Ответы [ 3 ]

4 голосов
/ 23 февраля 2012

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

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

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

2 голосов
/ 23 февраля 2012

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

1 голос
/ 23 февраля 2012

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

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

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

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

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

...