我想在CakePHP中创建一个全局变量。如果我在app_controller.php中定义了类似
的内容var $varName
我可以访问
$this->varName
来自我的任何控制器,但我无法从模型中获得它。
如何创建可从模型访问的全局变量?
$ varName的值直到运行时才知道,所以我认为bootstrap.php不是一个选项。
答案 0 :(得分:31)
CakePHP的新Configure class可以 用于存储和检索应用程序 或运行时特定值。是 小心,这个班可以让你 存储任何内容,然后使用它 代码的任何其他部分
答案 1 :(得分:30)
要保存全局变量,请使用Configure Class。例如:
配置:: write('Company.name','Pizza,Inc。');
要稍后在代码的任何位置读取变量,请使用:
配置::读( 'Company.name'); //产量:'Pizza,Inc。'
存储全局常量的推荐文件位于 app / config / bootstrap.php
有关详细信息,请参阅:
配置课程 - Configure Class CakePhp。
或关于Bootstrapping的第3.4.7节
答案 2 :(得分:5)
你可以在app / config / core.php中声明全局变量
Configure::write('variable Name','Variable Value');
你可以这样打印:
Configure::read('Variable Name');
答案 3 :(得分:2)
您的应用的全局函数和变量可以在app / config / bootstrap.php中定义
有关详细信息,请参阅http://book.cakephp.org/view/48/Bootstrapping-CakePHP
答案 4 :(得分:1)
您可以在app / config /目录中的bootstrap.php中定义常量。它可以全局用于任何控制器或视图。
答案 5 :(得分:0)
您可以尝试使用bootstrap.php(cake 3)定义常量
此文件适用于许多常见的自举任务:
定义便利功能。
声明常量。
定义缓存配置。
定义日志记录配置。
加载自定义变形。
加载配置文件。
ref https://book.cakephp.org/3.0/en/development/configuration.html#bootstrapping-cakephp
答案 6 :(得分:-2)
实际上,你为什么这样做?模型应该不知道控制器存在。
如果是商业(模型)对象,请按原样创建。如果没有,模型不应该知道它。