получение ресурса локали в начальной загрузке

#zend-framework #resources #locale #bootstrapping

#zend-framework #Ресурсы #локали #начальная загрузка

Вопрос:

Я вижу много примеров людей, делающих удивительные вещи, начиная с:

 $locale = $this->getResource('locale');
 

в их начальной загрузке. Но хотя у меня есть

 resources.locale.default = "nl_NL"
resources.locale.force = true
 

в моем application.ini и

 protected function _initLocale()
{
    $locale = $this->getResource('locale');
    // more code
}
 

var_dump($locale) по-прежнему возвращает значение NULL, а локаль, применяемая в другом месте моего приложения, — это zend по умолчанию «en (_US)».

Что я должен сделать, чтобы получить доступ (или инициализировать) к языковому стандарту, установленному в моем application.ini?

Ответ №1:

Проблема здесь в том, что ваш метод начальной загрузки переопределяет встроенный ресурс приложения, поскольку он имеет то же имя (часть после _init ).

Попробуйте это вместо

 protected function _initLocaleMods()
{
    // always bootstrap required resources
    $this->bootstrap('locale');

    $locale = $this->getResource('locale');

    // more code
}
 

Комментарии:

1. Спасибо, Фил, это работает! Хотя начальная загрузка (‘locale’) здесь действительно необходима: почему я всегда должен загружать ресурсы? Я не делаю этого для просмотра, базы данных, почты и т. Д., И мои настройки application.ini по-прежнему отображаются в другом месте.

2. @zensys Порядок ресурсов приложения и метода начальной загрузки не гарантируется, поэтому вы всегда должны убедиться, что ресурсы, от которых зависит ваш код, готовы к использованию. Вы бы загрузили view, db и т. Д. Только в том случае, Если бы ваш метод или пользовательский плагин ресурсов зависели от них. Прочитать отслеживание зависимостей