对 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 有重要价值的预定义部分:
进口
包含将由配置组件在处理中导入的资源数组。这些资源可能是 xml
、yml
甚至 php
个文件,这些文件将 return 排列。
服务
包含对将从该配置部分创建服务的 ServiceContainer 具有非常重要价值的服务定义。
参数
对 ServiceContainer 具有重要价值的参数将管理容器参数部分中的所有包含值。如果你想从服务容器中获取参数,你应该在这里定义它。
您还可以在捆绑配置中导入任何配置文件 class。
如果您将配置文件导入到 imports 块或您的包的配置 class 中,您应该将它们放在适当的部分:parameters, 服务.
根据要求示例:
parameters.yml:
parameters:
param: value1
array: {key1: value2}
services.yml:
services:
class: FQCN/To/Your/Class
我是 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 有重要价值的预定义部分:
进口
包含将由配置组件在处理中导入的资源数组。这些资源可能是
xml
、yml
甚至php
个文件,这些文件将 return 排列。服务
包含对将从该配置部分创建服务的 ServiceContainer 具有非常重要价值的服务定义。
参数
对 ServiceContainer 具有重要价值的参数将管理容器参数部分中的所有包含值。如果你想从服务容器中获取参数,你应该在这里定义它。
您还可以在捆绑配置中导入任何配置文件 class。
如果您将配置文件导入到 imports 块或您的包的配置 class 中,您应该将它们放在适当的部分:parameters, 服务.
根据要求示例:
parameters.yml:
parameters:
param: value1
array: {key1: value2}
services.yml:
services:
class: FQCN/To/Your/Class