Cakephp使用Vendor php文件中的变量

时间:2015-08-21 14:09:08

标签: variables cakephp include vendor

我在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中正确显示..

所以我的问题是,是否无法使用导入的供应商文件中的变量,或者我是否做错了什么?

3 个答案:

答案 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中定义它们,并将它们传递给那里的视图。

https://stackoverflow.com/a/4260264/5036487

相关问题