Cakephp 使用 Vendor php 文件中的变量

Cakephp use Variables from Vendor php file

我在 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..

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

最好在控制器中设置变量。如果这些需要多个控制器访问(如您的评论中所建议),那么您可以在 AppControllerbeforeRender() 回调中执行此操作:-

public function beforeRender() {
    $this->set('test', 'Placeholder');
    $this->set('anotherTest', 'anotherPlaceholder');
}

然后您可以在视图模板中正常使用它们:-

echo $test;

供应商文件实际上不应该用于设置视图的数据。

在您的 AppController.php 中定义它们,并将它们传递到那里的视图。

您可以在您的文件中为 return 这个变量写一个函数,然后在您的视图中调用这个函数。在你的情况下 toUse file:

function getVariable(){
    $var = 1;
    return $var;
}

然后在您的视图文件中

App::import('Vendor', 'languages', array('file' => 'variables/toUse.php'));
$x = getVariable();