Symfony 1.4我在app.yml中得到了错误的值

时间:2012-01-03 17:01:00

标签: plugins configuration symfony-1.4

显然不是那么简单。让我们从头开始:我正在开发一个共享项目,昨天我被要求添加插件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的值?我该如何纠正这种行为?

提前感谢大家的帮助,如果你需要更多细节,我会把它们添加起来

1 个答案:

答案 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类)