gpt4 book ai didi

cakephp - 定义全局数组常量以在 View 中使用

转载 作者:行者123 更新时间:2023-12-04 16:56:14 25 4
gpt4 key购买 nike

我想定义全局数组常量

bootstrap.php 中的代码
$adv_types = array('top' => 'Верх', 'left' => 'Левое', 'right' => 'Правое', 'bottom' => 'Нижнее');

View 文件中的代码

echo $form->input('Adv.type', array('type' => 'select', 'option' => $adv_types, 'label' => 'Место рекламы'));

但是 cakephp 给出了错误:

"Undefined variable: adv_types"

最佳答案

不幸的是,bootstrap.php 的范围是 bootstrap.php ,所以 $adv_types PHP 完成解析后,变量将超出范围 bootstrap.php .

您可以采用多种方法,具体取决于您的实际需求。

解决方案 1:您在许多 View 中都需要此变量

如果您需要该变量在所有 View 中可用,您应该在 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'));
}
}

这将允许您的任何 View 访问 $adv_types大批。

解决方案 2:您可能需要在 CakePHP 应用程序中的任何位置访问此变量

如果您必须访问 $adv_types应用程序中其他地方的变量,您可以将其添加到 Configure收藏。在 bootstrap.php :
Configure::write('NameOfYourAppAsNamespace.adv_types', array('top' => 'Верх', 'left' => 'Левое', 'right' => 'Правое', 'bottom' => 'Нижнее'));

我建议使用您的项目名称作为伪命名空间; adv_types不太可能与其他标识符发生冲突,但如果您开始更频繁地使用这种方法,则产生冲突的机会就会增加。此外,这允许您对存储在 Configure 中的数据进行分组。一个命名空间下的集合,可以方便调试。

无论如何,这种方法将允许您通过调用 Configure::read() 来访问 CakePHP 伞下任何范围内的变量。 .因此:
$adv_types = Configure::read('NameOfYourAppAsNamespace.adv_types');

解决方案 3:您绝对必须将此变量用作全局变量

如果您绝对必须将其作为标准 PHP 全局变量,您可以执行以下操作:
$GLOBALS['adv_types'] = array('top' => 'Верх', 'left' => 'Левое', 'right' => 'Правое', 'bottom' => 'Нижнее');

在执行此操作之前,请考虑这是否绝对必要。全局变量是一件非常麻烦的事情,你应该有一个 明确和当前的需求 为它辩护。

编辑/更新!

Google Translate 中的 30 秒让我发现您的数组包含与键对应的翻译。您可能想使用 CakePHP 的 Internationalization & Localization 进行调查。抽象出英语和俄语术语之间的区别的功能,用于顶部/左侧/右侧/底部(以及其他所有内容)。

关于cakephp - 定义全局数组常量以在 View 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4260067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com