什么是在Symfony中使用parameters.yml文件

时间:2014-08-04 14:29:06

标签: symfony

我曾经在config.yml文件中为Symfony项目编写我的配置:

my_bundle:
    internal_identifier: %test%
    key: %someparam%
    endpoint: %nobil_endpoint%

并使用parameters.yml(被git忽略)允许其他开发人员拥有不同的值。

我认为使用这个:

my_bundle:
    internal_identifier: my-identifier
    key: 12345
    endpoint: www.endpoint.com

仍然允许开发人员拥有不同的值,因为他们可以使用也被Git忽略的config_dev.yml。

所以我的问题是:如果config_dev.yml可以用于同一件事,那么parameters.yml文件的目的是什么?

4 个答案:

答案 0 :(得分:3)

我认为这里有两件事要问:

  1. 为什么parameters.yml被忽略为默认的Symfony .gitignore文件?
  2. 为什么要使用parameters.yml而不是config_dev.yml?
  3. 根据第一个问题,默认情况下会忽略parameters.yml,因为此文件用于保存每次安装的设置。例如,不同开发者可能需要不同的数据库设置如果不忽略parameters.yml,则会将“个人”设置复制到每个开发人员。

    As of Symfony 2.3 you should put the needed parameters, along with default values, in a file called parameters.yml.dist.然后,当您运行composer install时,编辑器脚本将检查此文件并创建/更新您的本地parameters.yml文件,提示您进行每个设置,使您有机会将设置更改为与给定的安装相关。

    根据第二个问题,参数被认为与配置设置不同。参数是将安装更改为安装的设置,而对于特定应用的所有安装(although they may be different from dev to production environments,配置设置将保持不变。)

答案 1 :(得分:2)

首先,git忽略了什么取决于你,你的repo-root中有一个.gitignore文件

我建议使用不同的参数:

你有不同的parameter.yml,如:

parameters.yml.dev.one
parameters.yml.dev.two
parameters.yml.dev.three

例如,您是开发人员,然后您创建一个符号链接到“您的”parameters.yml.dev.one,如:

cd app/config; ln -s parameters.yml.dev.one parameters.yml 

所以现在您的机器上有一个指向参数

的parameters.yml

开发人员2会对其参数进行符号链接,依此类推

如果您不清楚参数和配置之间的区别,请查看symfony book

当您需要使用符号链接在prelive或live或其他任何数据库连接时,您可以对您的阶段执行相同操作

这样做的好处是每个开发人员都有他的机器上的每个阶段和开发人员的参数

欢呼声

答案 2 :(得分:1)

被Git忽略是最有用的,但在执行composer install时它也会提示您缺少值。

如果您想要使用未被忽略的公共参数,可以创建parameters_common.yml并在config.yml中将其输入(或直接在config.yml中添加)。

为了高级使用配置/参数文件,建议您检查https://github.com/wemakecustom/DirectoryLoaderBundle

答案 3 :(得分:0)

因为您在生产环境中的位置,symfony需要在PRODuction环境中工作,而不是在DEV中工作。

为什么从存储库中删除了config_dev.yml?