#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 и т. Д. Только в том случае, Если бы ваш метод или пользовательский плагин ресурсов зависели от них. Прочитать отслеживание зависимостей