答案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