Как передать переменную из app_controller в макет - PullRequest
3 голосов
/ 01 февраля 2011

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

Я попробовал это в моем 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]

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

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

Спасибо!

Ответы [ 4 ]

3 голосов
/ 01 февраля 2011

Единственное, о чем я могу думать, это то, что вы не используете 1.3, как вы говорите, и заражаете 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
2 голосов
/ 20 сентября 2012

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

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

function beforeFilter() {
    $this->set('your_var', 'Data for the var');}
1 голос
/ 01 февраля 2011

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

В 1.2 ключи в viewVars были верблюжьими () ... в 1.3 это уже не так.

0 голосов
/ 01 февраля 2011

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

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

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

echo $my_var_for_layout;
...