我是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!
一些想法?
谢谢!
答案 0 :(得分:3)
我能想到的唯一一件事就是你没有像你说的那样使用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
答案 1 :(得分:2)
将vars从app__controller
传递到任何布局的好方法是使用beforeFilter()
中的app_controller
函数。
这与Auth使用的功能相同:
function beforeFilter() {
$this->set('your_var', 'Data for the var');}
答案 2 :(得分:1)
SQuat,您使用的是哪个版本的CakePHP?正如dogmatic69指出的那样,行为在1.2到1.3之间存在差异。您可以使用debug($ this-> viewVars)获取视图可用的所有变量的列表。
在1.2中,viewVars中的键是camelized()...在1.3中不再是这种情况。
答案 3 :(得分:-3)
要从控制器将'my_var'传递给布局,您需要在变量名的末尾附加'_for_layout'。控制器中的代码如下所示:
$this->set('my_var_for_layout', $my_var_to_pass);
在您的布局文件中,您可以访问从控制器传递的变量,如下所示:
echo $my_var_for_layout;