Symfony 2 - 如何在parameters.yml.dist中定义服务参数

时间:2015-05-20 09:52:56

标签: symfony

假设我们在 parameters.yml 中有一个服务/捆绑包需要设置参数。这种依赖应该反映在parameters.yml.dist中。

如何在服务/捆绑中定义依赖,以便当某人自动添加到parameters.yml.dist(理想情况下具有预设的默认值)时将该服务/捆绑包添加到他的项目中?

正确的方式是什么?

免责声明:我知道这是(或应该)一个非常基本的问题,但我一直在寻找答案,我找不到它,所以有可能其他人也找不到它。

4 个答案:

答案 0 :(得分:0)

不是100%肯定,但你可以检查一下:

在自定义捆绑包中的composer.json文件中添加配置:

ul{
    float:right;
    margin:0;
    padding:0
    display:block;
    list-style:none;    
}
ul:after, ul:before{
    content:"";
    display:table;
    clear:both;
}
ul li{
    margin-left:10px;
    float:left;
    display:inline-block;
}
div{
    display:block;
    width:100%;
}

然后在"scripts": { "post-install-cmd": [ "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters" ], "post-update-cmd": [ "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters" ] }, "extra": { "incenteev-parameters": { "file": "src/MyBundle/config/parameters.yml" } } 目录中生成parameters.yml.dist个文件。

答案 1 :(得分:0)

我今天需要同样的事情。虽然我无法找到一种推动它的方法。到parameters.yml.dist,但我可以在捆绑的build方法中为其设置默认值:

/**
 * @param ContainerBuilder $container
 */
public function build(ContainerBuilder $container)
{
    parent::build($container);

    //Make sure we have the parameter defined by default
    if (!$container->hasParameter('my.little.pony')) {
        $container->setParameter('my.little.pony', []);
    }
}

在某些情况下,默认值可能就足够了。 因此,如果您将参数作为参数注入服务,它将不会死。

答案 2 :(得分:-1)

首先您需要将您的捆绑包配置为从config.yml读取 - 请阅读this

然后,您可以在parameters.yml中轻松定义捆绑参数,即:

# app/config/config.yml

acme_social:
    twitter:
        client_id: %client_id%
        client_secret: %client_secret%

我知道这不是你问题的直接答案,但这是达到你想要的正确方法。

答案 3 :(得分:-1)

正确的方法:为最终用户编写文档,说明他们可以设置哪些参数以及它们的含义。

开发人员安装捆绑包后,如果没有您的文档,则无法自动处理parameters.yml.dist。因为必须在根composer.json中定义可由Composer执行的所有脚本。但是您需要的文档可以解释开发人员如何设置它。