Cakephp 如何将变量从app_控制器传递到布局

Cakephp 如何将变量从app_控制器传递到布局,cakephp,layout,cakephp-1.3,Cakephp,Layout,Cakephp 1.3,我是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\view

我是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]
我用的是蛋糕1.3

一些想法


谢谢

要将“my_var”从控制器传递到布局,需要在变量名的末尾附加“_for_layout”。控制器中的代码如下所示:

$this->set('my_var_for_layout', $my_var_to_pass);
echo $my_var_for_layout;
在布局文件中,您可以访问从控制器传递的变量,如下所示:

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

我能想到的唯一一件事是,你没有像你说的那样使用1.3,事实上1.2确实有代码将一些变量转换成了一些变量,所以你可以试试

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

Shuck,您使用的是哪个版本的CakePHP?正如教条主义69所指出的,从1.2到1.3,行为上存在差异。您可以通过debug($this->viewVars)获得视图可用的所有变量的列表


在1.2中,viewVars中的键被骆驼化()。。。在1.3中,情况不再如此

将变量从
app\u controller
传递到任何布局的好方法是使用
app\u controller
中的函数
beforeFilter()

这与Auth使用的函数相同:

function beforeFilter() {
    $this->set('your_var', 'Data for the var');}

不起作用:注意(8):未定义变量:var_for_layout[APP\views\layouts\default.ctp,第72行]您是否使用“my_var_for_layout”而不是“var_for_layout”?确保在控制器和布局之间使用相同的名称。另外,$my_var_to_pass是否分配给一个值?$this->set('var_for_layout','test');echo$var_用于_布局;不工作。我正在尝试将变量从app_控制器传递到default.ctp,如果这有帮助的话。。。(使用cake 1.3)添加_for_布局对变量没有任何作用我使用的是1.3(可能是新的,但不是那么noob:)!你至少试过我说的吗?试一下公关($this->viewVars);查看其中包含的内容,如果不起作用,可能您的一个视图正在对变量使用unset()。视图在布局之前呈现,因此这可能是一个。。。myvar没有列出:(而且myvar在我整个项目的其他任何地方都没有使用,所以我不能在它上面有任何unset()。。您试图设置的变量的实际名称是什么,或者这方面的实际代码是什么。您能在调试输出中看到您正在查找的变量吗?如果没有,请准备一个粘贴箱,并在响应中包含url。