困惑于Symfony2 YAML进口

时间:2015-02-27 17:07:37

标签: symfony yaml

我是Symfony的新手,对imports顶部的config.yml密钥感到有些困惑。我正在尝试将/our_stuff/admin/version.yml导入Symfony的config.yml文件。

这就是我的config.yml文件:

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: '/our_stuff/admin/version.yml' }

这就是我在version.yml文件

中的内容
version:
  last_recorded_software_version: '10.12.1'

但这会产生错误:

FileLoaderLoadException: Cannot import resource "/our_stuff/admin/version.yml" from "/our_stuff/admin/symfony/app/config/config.yml". (There is no extension able to load the configuration for "last_recorded_software_version" (in /our_stuff/admin/version.yml). 
    Looked for namespace "last_recorded_software_version", found "framework", "security", "twig", "monolog", "swiftmailer", "assetic", "doctrine", "sensio_framework_extra", "web_profiler", "sensio_distribution")

为了测试,我还将version.yml文件移动到Symfony的config文件夹中。路径为symfony_root/app/config/,但仍会产生相同的错误。

为什么导入工作的是Symfony中包含的默认YAML文件,而不是我包含的那个?

编辑为了清晰而编辑

编辑2 以下是/our_stuff/admin/version.yml文件的全部内容:

# Update this variable ONLY RIGHT BEFORE creating a new numbered release 
version:
  last_recorded_software_version: '10.12.1'

编辑3 解决方案:

version.yml文件需要具有parameters的命名空间才能在config.yml文件中读取它们

# app/config/config.yml
imports:
    - { resource: 'parameters.yml' }
    - { resource: '/etc/sites/mysite.com/parameters.yml' }





#/etc/sites/mysite.com/version.yml
parameters:
   some_key:
      some_other_key: value
      some_other_key1: value
      ...

3 个答案:

答案 0 :(得分:2)

您可以将配置文件存储在项目目录或项目目录之外,并可以查看此链接global-configuration-files

您可以包含以下配置文件:

# app/config/config.yml
imports:
    - { resource: 'parameters.yml' }
    - { resource: '/etc/sites/mysite.com/parameters.yml' }

您的version.yml文件格式应为:

parameters:
   some_key:
      some_other_key: value
      some_other_key1: value
      ...

答案 1 :(得分:1)

Symfony中的所有配置文件都由Configuration组件解析。默认情况下,Symfony应用程序仅导入一个文件:config_%environment%.yml。此文件有3个预定义的部分,它们对Symfony具有重要价值:

  • 进口

    包含配置组件在处理中导入的资源数组。这些资源可能是将返回数组的xmlyml甚至php个文件。

  • 服务

    包含对于将从此配置部分创建服务的ServiceContainer具有非常重要价值的服务定义。

  • 参数

    对ServiceContainer具有重要价值的参数,它将管理容器参数部分中的所有包含值。如果你想从服务容器中获取参数,你应该在这里定义它。

您还可以在捆绑包的配置类中导入任何配置文件。

如果您在导入块或捆绑包的配置类中导入配置文件,则应将它们放在适当的部分:参数服务

如所要求的例子:

<强> parameters.yml

parameters:
    param: value1
    array: {key1: value2}

<强> services.yml

services:
    class: FQCN/To/Your/Class

答案 2 :(得分:0)

如果你把你的version.config放在某个包下面,你必须像这样导入它:

- { resource: "@AAA/YourBundle/Resources/config/version.yml" }

否则您的首次导入将完美无缺:

- { resource: version.yml }