显然不是那么简单。让我们从头开始:我正在开发一个共享项目,昨天我被要求添加插件mgI18n。我一步一步地按照自述文件,但是当它运行命令行来创建插件使用的表时,我得到了这个:
数据库“”不存在
我搜索过它,我发现sfConfig :: get('app_mgI18nPlugin_connection');返回一个空值。这很奇怪,因为我已经完成了每一步,在我的app.yml中设置了值并清除了symfony缓存,所以我记录了sfConfig :: getAll();并且发现这里存储的'app_'的唯一值是来自kdDoctrineGuardFacebookConnectPlugin的插件文件夹中的app.yml文件中的值。我已经尝试删除该文件并清除缓存,只获取丢失这些值。
这是文件内容:
项目/应用/前端/配置/ app.yml
all:
#other values
facebook:
appId: yyy
secret: yyy
cookie: true
script_lang: fr_FR
perms: email
mgI18nPlugin:
connection: doctrine
cultures_available:
fr: Français
en: English
it: Italiano
de: Deutsch
项目/插件/ kdDoctrineGuardFacebookConnectPlugin /配置/ app.yml
all:
facebook:
appId: xxx
secret: xxx
cookie: true
script_lang: fr_FR
perms: email
这是我记录sfConfig :: getAll()时得到的结果; :
array('app_facebook_appId' => 'xxx',
'app_facebook_secret' => 'xxx',
'app_facebook_cookie' => true,
'app_facebook_script_lang' => 'fr_FR',
'app_facebook_perms' => 'email',
)
为什么没有加载主app.yml的值?我该如何纠正这种行为?
提前感谢大家的帮助,如果你需要更多细节,我会把它们添加起来
答案 0 :(得分:1)
如果我理解你很好,你就处于命令行任务环境(某些sfTask)。默认情况下,Symfony任务不在应用程序上下文中运行。在大多数情况下,只需将您的任务称为
./symfony namespace:name --application=frontend
你会得到你的配置。 如果这是您自己的任务,只需在configure方法中添加一个带默认值的选项:
$this->addOptions(array(
new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name', 'frontend'),
...
)
正确加载插件设置,因为每个项目而不是应用程序配置插件(在ProjectConfiguration中启用它们,而不是生成frontendConfiguration类)