zuzuleinen
zuzuleinen

Reputation: 2634

What's the use of parameters.yml file in Symfony

I used to write my configs for Symfony project like this in config.yml file:

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

and used parameters.yml (which was ignored by git) for allowing other developers to have different values.

Bu I think using this:

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

still allows developers to have different values because they can use config_dev.yml which is also ignored by Git.

So my question is this: what's the purpose of parameters.yml file if config_dev.yml can be used for the same thing?

Upvotes: 3

Views: 3508

Answers (4)

Dave Lancea
Dave Lancea

Reputation: 1689

I think two things are being asked here:

  1. Why is parameters.yml ignored be the default Symfony .gitignore file?
  2. Why use parameters.yml instead of config_dev.yml?

Per the first question, parameters.yml is ignored by default because this file is meant to hold settings which are per-installation. For instance different developers might need different database settings. If parameters.yml wasn't ignored, your "personal" settings would be copied to every developer.

As of Symfony 2.3 you should put the needed parameters, along with default values, in a file called parameters.yml.dist. Then, when you run composer install a composer script will check for this file and create/update your local parameters.yml file, prompting you for each setting which gives you the opportunity to change the settings to be relevant to the given install.

Per the second issue, parameters are considered different than config settings. Parameters are settings which will change install to install, whereas config settings will stay the same for all installs of a particular app (although they may be different from dev to production environments.)

Upvotes: 4

lavoiesl
lavoiesl

Reputation: 448

Being ignored by Git is the most useful, but it also prompts you for missing values when doing composer install.

If you want to have common parameters that are not ignored, you can create a parameters_common.yml and source it in config.yml (or add them directly in config.yml).

For an advanced use of config/parameters files, I suggest you check https://github.com/wemakecustom/DirectoryLoaderBundle

Upvotes: 1

sensorario
sensorario

Reputation: 21600

Because where you are in production environment, symfony needs to work in PRODuction environment and not in DEV.

Why you removed config_dev.yml from repository?

Upvotes: 0

john Smith
john Smith

Reputation: 17906

first, what is ignored by git is up to you, there is a .gitignore file in your repo-root

my advice to use different parameters would be:

you have different parameter.yml´s like :

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

and for example you are developer one then you make a symbolic link to "your" parameters.yml.dev.one like :

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

so now there is a parameters.yml on your machine that points on your parameters

developer two would make a symbolic link to his parameters and so on

if you are not clear about the difference between parameters and config, please check symfony book

you can do the same with your stages when you need for example another database-connection on prelive or live or whatever by using symbolic links

the advantage of this is that every developer has the parameters of every stage and developer on his machine

cheers

Upvotes: 2

Related Questions