对 Symfony2 YAML 导入感到困惑

Confused on Symfony2 YAML imports

我是 Symfony 的新手,对 config.yml 顶部的 imports 键有点困惑。我正在尝试将 /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 的配置文件夹中。路径是 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
      ...

如果您将 version.config 放在某个包下,您必须像这样导入它:

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

否则您的第一次导入将完美运行:

- { resource: version.yml }

您可以将配置文件存储在项目目录之外或项目目录中,并且可以包括检查此 link 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
      ...

Symfony 中的所有配置文件都由配置组件解析。 Symfony 应用程序默认只导入一个文件:config_%environment%.yml。这个文件有 3 个对 Symfony 有重要价值的预定义部分:

  • 进口

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

  • 服务

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

  • 参数

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

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

如果您将配置文件导入到 imports 块或您的包的配置 class 中,您应该将它们放在适当的部分:parameters, 服务.

根据要求示例:

parameters.yml:

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

services.yml:

services:
    class: FQCN/To/Your/Class