假设我们在 parameters.yml 中有一个服务/捆绑包需要设置参数。这种依赖应该反映在parameters.yml.dist中。
但如何在服务/捆绑中定义依赖,以便当某人自动添加到parameters.yml.dist(理想情况下具有预设的默认值)时将该服务/捆绑包添加到他的项目中?
正确的方式是什么?
免责声明:我知道这是(或应该)一个非常基本的问题,但我一直在寻找答案,我找不到它,所以有可能其他人也找不到它。
答案 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执行的所有脚本。但是您需要的文档可以解释开发人员如何设置它。