我想定义全局数组常量
bootstrap.php中的代码
$adv_types = array('top' => '????', 'left' => '?????', 'right' => '??????', 'bottom' => '??????');
视图文件中的代码
echo $form->input('Adv.type', array('type' => 'select', 'option' => $adv_types, 'label' => '????? ???????'));
但是cakephp给出了错误:
"未定义的变量:adv_types"
不幸的是,范围bootstrap.php是bootstrap.php,所以$adv_types一旦PHP完成解析,变量就会超出范围bootstrap.php.
您可以采取多种方法,具体取决于您的实际要求.
解决方案1:您在许多视图中都需要这些变量
如果需要变量在所有视图中可用,则应定义并设置它AppController::beforeRender().
在app/app_controller.php:
class AppController extends Controller
{
function beforeRender()
{
parent::beforeRender();
$adv_types = array('top' => '????', 'left' => '?????', 'right' => '??????', 'bottom' => '??????');
$this->set(compact('adv_types'));
}
}
Run Code Online (Sandbox Code Playgroud)
这将允许您的任何视图访问该$adv_types数组.
解决方案2:您可能需要在CakePHP应用程序中的任何位置访问此变量
如果您必须$adv_types在应用程序的其他位置访问该变量,则可以将其添加到Configure集合中.在bootstrap.php:
Configure::write('NameOfYourAppAsNamespace.adv_types', array('top' => '????', 'left' => '?????', 'right' => '??????', 'bottom' => '??????'));
Run Code Online (Sandbox Code Playgroud)
我建议使用项目名称作为伪命名空间; adv_types不太可能与其他标识符冲突,但如果您更频繁地开始使用此方法,则会增加创建冲突的可能性.此外,这允许您将存储在Configure集合中的数据分组到一个名称空间下,这对于调试很方便.
无论如何,这种方法将允许您通过调用访问CakePHP伞下任何范围内的变量Configure::read().从而:
$adv_types = Configure::read('NameOfYourAppAsNamespace.adv_types');
Run Code Online (Sandbox Code Playgroud)
解决方案3:您绝对必须将此变量用作全局变量
如果您绝对必须将此作为标准PHP全局变量,则可以执行以下操作:
$GLOBALS['adv_types'] = array('top' => '????', 'left' => '?????', 'right' => '??????', 'bottom' => '??????');
Run Code Online (Sandbox Code Playgroud)
在此之前,请考虑这是否是必要的.全局变量是一个非常混乱的业务,你应该有一个明确和现在的需要来证明它.
编辑/更新!
Google翻译中的三十秒让我发现您的数组包含与键对应的翻译.您可能想要调查使用CakePHP的国际化和本地化功能来抽象出顶部/左侧/右侧/底部(以及其他所有内容)的英语和俄语术语之间的区别.
这些需要在app_controller.php中设置,然后传递给您的视图
// app_controller.php
class AppController extends Controller {
var $adv_types = array('top' => '????', 'left' => '?????', 'right' => '??????', 'bottom' => '??????');
function beforeFilter() {
$this->set('adv_types', $this->adv_types);
}
}
Run Code Online (Sandbox Code Playgroud)
对我来说,bootstrap.php不是这个常量的正确文件