我是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
...
答案 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具有重要价值:
进口
包含配置组件在处理中导入的资源数组。这些资源可能是将返回数组的xml
,yml
甚至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 }