Передать переменную из вида в макет в CakePHP - или куда еще поместить эту логику? - PullRequest
3 голосов
/ 23 марта 2011

Я хочу заполнить массив $pageWidgets в моих представлениях, чтобы я мог контролировать, какие виджеты появляются на моей боковой панели и с какой информацией в моем макете, кроме моего представления. Моя единственная проблема заключается в том, что макет, кажется, анализируется перед представлением (или каким-либо другим блоком), и он не работает.

Просто мой массив $pageWidgets содержит ключ с именем элемента и значением данных из моей модели (т.е.: $pageWidgets['product_meta'] = $product;, и основной макет просто проходит по этому массиву и заполняет боковую панель.

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

Я использую CakePHP 1.3.

1 Ответ

5 голосов
/ 24 марта 2011

Я фактически использую ту же технику для той же цели.Однако вы должны установить массив в представлении следующим образом:

$this->set('widgetsToRender', array(foobar));

Затем в вашем макете или в файле элемента вы можете использовать этот массив.Пример:

<?php
if (in_array('some_widget', $widgetsToRender)):
// do whatever

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

if (empty($widgetsToRender)) {
    $widgetsToRender = array(default value);
}
...