2011-02-01 3 views
3

Я новичок в CakePhp, и я пытаюсь передать переменную из моего app_controller.php в мой default.ctp.Как передать переменную из app_controller в макет

Я попробовал это в моем app_controller.php:

function beforeFilter(){ 
$this->set('my_var', $my_var_to_pass); 
} 

Но когда я делаю это в моем default.ctp:

echo $my_var; 

Я получил это:

Notice (8): Undefined variable: my_var [APP\views\layouts\default.ctp, line 72] 

I используя Cake 1.3!

Некоторые идеи?

Спасибо!

ответ

3

единственное, что я могу думать что вы не используете 1.3, как вы говорите, и Infact 1,2, как было есть код, который преобразуется в some_var someVar так либо попробовать

$this->set('myvar', $my_var_to_pass); 
echo $myvar 
// or 
$this->set('my_var', $my_var_to_pass); 
// and 
echo $myVar 
+0

Я использую 1.3 (возможно, но новый, но не такой новичок :))! –

+0

Вы хотя бы попробовали то, что я сказал? – dogmatic69

+0

Да, я пробовал, тот же вопрос ... –

-2

Чтобы передать «my_var» вашему макету с вашего контроллера, вам нужно добавить «_for_layout» в конец имени переменной. Код в контроллере будет выглядеть следующим образом:

$this->set('my_var_for_layout', $my_var_to_pass); 

В файле макета, вы можете получить доступ к переменной, переданной от контроллера, как это:

echo $my_var_for_layout; 
+0

Не работает: Уведомление (8): Не определено переменная: var_for_layout [APP \ вид \ раскладок \ default.ctp, строка 72] –

+0

Ты используя 'my_var_for_layout', а не 'var_for_layout'? Убедитесь, что вы используете одно и то же имя между контроллером и макетом. Кроме того, присваивается значение $ my_var_to_pass? –

+0

$ this-> set ('var_for_layout', 'test'); с echo $ var_for_layout; не работает. –

1

приземистый, какую версию CakePHP вы используете? Как указывал догматик69, существует разница в поведении от 1,2 до 1,3. Вы можете получить список всех переменных, доступных вашему представлению, с помощью debug ($ this-> viewVars).

В 1.2, ключи в видеVars были camelized() ... в 1.3, это уже не так.

+0

Я использую Cake 1.3 –

+0

Можете ли вы увидеть переменные, которые вы ищете на выходе отладки? Если нет, подготовьте pastebin и включите url в свой ответ. – TehTreag

2

Хороший способ передать vars от app__controller до любой компоновки, заключается в использовании функции beforeFilter() в app_controller.

Это та же функция, которая использует Auth:

function beforeFilter() { 
    $this->set('your_var', 'Data for the var');} 
Смежные вопросы