К сожалению, область действия 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'));
}
}
Это позволит любому из ваших представлений получить доступ к массиву $adv_types
.
Решение 2: вам может понадобиться доступ к этой переменной в любом месте вашего приложения CakePHP
Если вам нужен доступ к переменной $adv_types
в другом месте вашего приложения, вы можете добавить ее вConfigure
коллекция.В bootstrap.php
:
Configure::write('NameOfYourAppAsNamespace.adv_types', array('top' => 'Верх', 'left' => 'Левое', 'right' => 'Правое', 'bottom' => 'Нижнее'));
я рекомендую использовать имя вашего проекта в качестве псевдо-пространства имен;adv_types
вряд ли конфликтует с другими идентификаторами, но если вы начнете использовать этот подход чаще, ваши шансы на создание конфликтов возрастут.Кроме того, это позволяет группировать данные, хранящиеся в коллекции Configure
, в одном пространстве имен, что может быть удобно для отладки.
В любом случае, этот подход позволит вам получить доступ к переменной в любой областипод зонтиком CakePHP, вызвав Configure::read()
.Таким образом:
$adv_types = Configure::read('NameOfYourAppAsNamespace.adv_types');
Решение 3: вы обязательно должны иметь эту переменную в качестве глобальной переменной
Если вы абсолютно должны иметь это какстандартная глобальная переменная PHP, вы можете сделать следующее:
$GLOBALS['adv_types'] = array('top' => 'Верх', 'left' => 'Левое', 'right' => 'Правое', 'bottom' => 'Нижнее');
Перед этим , пожалуйста, подумайте, строго ли это необходимо .Глобальные переменные - это действительно грязный бизнес, и у вас должна быть ясная и существующая потребность для ее обоснования.
Редактировать / обновить!
Тридцать секунд в Google Translate позволили мне обнаружить, что ваш массив содержит переводы, соответствующие ключам.Возможно, вы захотите изучить возможности Интернационализация и локализация в CakePHP, чтобы абстрагироваться от различий между английскими и русскими терминами top / left / right / bottom (и всем остальным).