答案flyx给你一个正确的解决方案,但是并不表示你一直在做什么错在你的试验,以找到一个解决方案,并没有解决问题因为你遇到restr symfony3正在使用的基于PHP的YAML解析器中的习惯用法。
此:
calls:
- [ setReader, ["@sonata.admin.audit.manager", "@doctrine.orm.default_entity_manager"]]
setTemplates:
- show: XxxBundle:PmodOrder:show.html.twig
- edit: XxxBundle:PmodOrder:edit.html.twig
- create: XxxBundle:PmodOrder:create.html.twig}]]
有问题。您首先将映射关键字calls
的值作为序列,方法是在以[ setReader, ["@sonat...
开头的(流式样)序列元素之前有一个破折号(-
)。然后在相同的缩进级别上,您有一个映射键setTemplates
,并且这在YAML中是不允许的。尾随}]]
也应该被删除,因为它们不是映射值XxxBundle:PmodOrder:create.html.twig}]]
您可以通过插入额外的短跑固定在你的第二个例子中的语法错误(和删除后}]]
)的一部分,但实际上并没有注意到你通过使映射
setTemplates, [{show: XxxBundle:PmodOrder:show.html.twig, edit: XxxBundle:PmodOrder:edit.html.twig, create: XxxBundle:PmodOrder:create.html.twig}]]
作为用于calls
代替的序列的序列的元素是为calls
值的值的序列的一个元素除去全节点。
这个问题来自尝试重写太多的东西在同一时间和/或通过开始在错误的结束。
在YAML,如果你想重写流量风格节点阻止风格,你应该开始在顶层和向内工作,所以你可以这样做在一步一个脚印。
这是因为流量风格可以在自身和块样式中发生,但块风格不能流风格内发生,只能在其他区块的风格。
因此在重写你的第一步应该是把最外面的序列是流动的风格和重写它(我使用的2空间的缩进,似乎如果线路长度是一个问题更合适):
calls:
- [ setReader, ["@sonata.admin.audit.manager", "@doctrine.orm.default_entity_manager"]]
-
- setTemplates
- [{show: XxxBundle:PmodOrder:show.html.twig, edit: XxxBundle:PmodOrder:edit.html.twig, create: XxxBundle:PmodOrder:create.html.twig}]
您可以但不必在块样式序列中的第一个块样式序列中的第一个元素与父代相同,但YAML解析器symfony3使用的不允许此。的一般方法是:
- 与
-
- 替换最外
[
替代任何,
**不是嵌套节点内([]
或{}
之间是不是标字符串的一部分),具有-
即与在步骤1中
- 相同缩进作为
-
换行符移除最后]
如果您使用的是PHP,则由于PHP解析器的限制,也会将第一个-
移至新行。
这不降低线长度得多,所以重复上一个新的水平,其是仅具有一个元素的序列上面的步骤:
calls:
- [ setReader, ["@sonata.admin.audit.manager", "@doctrine.orm.default_entity_manager"]]
-
- setTemplates
-
- {show: XxxBundle:PmodOrder:show.html.twig, edit: XxxBundle:PmodOrder:edit.html.twig, create: XxxBundle:PmodOrder:create.html.twig}
现在攻击下一级是一个映射。的步骤是:
- 除去最外面的
{
- 替代任何
,
**不是(即是不是标字符串的一部分或[]
之间{}
)嵌套节点内,并对准键(:
之前的部分上具有相同的凹槽,如步骤的主要1.
- 移除最后
}
- 如果任何键 - 值对都引用并通过只有一个冒号分开换行符(
:
)而不是col在空格上插入冒号后面的空格,并在可能时删除引号。
这最后一步不会影响您的代码,但可能需要更多JSON,如YAML。
做这些步骤可以让你:
calls:
- [ setReader, ["@sonata.admin.audit.manager", "@doctrine.orm.default_entity_manager"]]
-
- setTemplates
-
- show: XxxBundle:PmodOrder:show.html.twig
edit: XxxBundle:PmodOrder:edit.html.twig
create: XxxBundle:PmodOrder:create.html.twig
的YAML给出了相同的结果装在每一个步骤。取适量涂抹于[ setReader...
部分相同的步骤就大功告成了:
calls:
-
- setReader
-
- "@sonata.admin.audit.manager"
- "@doctrine.orm.default_entity_manager"
-
- setTemplates
-
- show: XxxBundle:PmodOrder:show.html.twig
edit: XxxBundle:PmodOrder:edit.html.twig
create: XxxBundle:PmodOrder:create.html.twig
如果你不能检查与symfony3每一个步骤,可以检查与PHP based YAML checker/converter每一步。它不是那里最好的解析器,但至少它与symfony3使用的限制相同。
'class:AppBundle \ Try2'来自哪里,它不在@ Mentos93原始文章中。 – Anthon
@Anon Try2只是我写的一个简单的类来测试配置。曼陀斯刚刚离开了他的问题,因为它并不真正相关。所有服务定义都需要一个类。至少直到最新的依赖注入容器被释放。 – Cerad