我在Cakephp 2.X中导入了一个自写的PHP供应商文件,就像这样
查看:XXX.ctp:
App::import('Vendor', 'languages', array('file' => 'variables/toUse.php'));
在这个文件中,我已经声明了一些像这样的变量,以便在视图中使用它们:
toUse.php:
$test = 'Placeholder';
$anotherTest = 'anotherPlaceholder';
但遗憾的是我无法在我的视图中使用该变量:
Notice (8): Undefined variable: test [APP/View/XXX/XXX.ctp, line X]
但是例如我的toUse.php中的Debugger :: dump()在我的视图XXX.ctp中正确显示..
所以我的问题是,是否无法使用导入的供应商文件中的变量,或者我是否做错了什么?
答案 0 :(得分:1)
最好在Controller中设置变量。如果需要多个控制器访问这些内容(如评论中所示),那么您可以在beforeRender()
的{{1}}回调中执行此操作: -
AppController
然后,您可以在视图模板中正常使用这些: -
public function beforeRender() {
$this->set('test', 'Placeholder');
$this->set('anotherTest', 'anotherPlaceholder');
}
供应商文件不应该用于设置视图的数据。
答案 1 :(得分:1)
您可以在文件中编写一个函数来返回此变量,然后在视图中调用此函数。在您的情况下, toUse 文件:
function getVariable(){
$var = 1;
return $var;
}
然后在视图文件中
App::import('Vendor', 'languages', array('file' => 'variables/toUse.php'));
$x = getVariable();
答案 2 :(得分:0)
在AppController.php中定义它们,并将它们传递给那里的视图。