То, что я хочу сделать, довольно просто: сохранить данные в пользовательском конфигурационном файле, который я хочу прочитать позже.
Я создал свой файл something.yml
который я положил в глобальный каталог config
.
Это выглядит так:
prod:
test: ok
dev:
test: ko
all:
foo: bar
john: doe
Затем я скопировал config_handlers.yml, а также поместил его в каталог config и добавил следующее в начало файла:
config/something.yml:
class: sfDefineEnvironmentConfigHandler
param:
prefix: something_
Но если я звоню sfConfig :: get ("something_foo");
Я продолжаю получать NULL
.
Что я сделал не так? I just want to read values, so no need to create a custome config handler, right?
I've read the doc here: http://www.symfony-project.org/book/1_2/19-Mastering-Symfony-s-Configuration-Files even though I'm running 1.4 (I don't think that changed since then).
Edit: Of course I can use sfYaml::load()
but I'd like to do things in a better way.
Это действительно просто, но также немного хитро:
Создайте файл /config/config_handlers.yml
и добавьте это:
config/something.yml:
class: sfDefineEnvironmentConfigHandler
param:
prefix: something_
Затем добавьте эти две строки в /web/index.php
после ... getApplicationConfiguration ()
(а также добавьте их в frontend_dev.php и везде, где вы хотите, чтобы этот файл конфигурации был доступен):
$configCache = new sfConfigCache($configuration);
include($configCache->checkConfig('config/something.yml'));
Итак, ваш / web / index. php
впоследствии может выглядеть так:
<?php
require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', false);
$configCache = new sfConfigCache($configuration);
$configCache->checkConfig('config/something.yml');
sfContext::createInstance($configuration)->dispatch();
Кстати: Это также есть в документации, которую вы процитировали, хотя вызов checkConfig () находится в другом месте. Найдите это: «Если вам нужен код, основанный на файле map.yml и сгенерированный обработчиком myMapConfigHandler в вашем приложении, вызовите следующую строку:»
Удачи; -)
Вы очистили файлы кэша?
php symfony cc
В среде prodution все файлы конфигурации, классы и т.д... кэшируются.