对不存在的服务的依赖 "SonataMedia/MediaAdmin/inner_row_media.html.twig"
Dependency on a non-existent service "SonataMedia/MediaAdmin/inner_row_media.html.twig"
使用 Sonata 的 Easy Extends 工具,我正在扩展 MediaAdmin 基础 class 并覆盖该 class 的现有服务。为此,我转换了这个 XML 服务定义(在 vendor 文件夹中):
<service id="sonata.media.admin.media" class="%sonata.media.admin.media.class%" public="true">
<tag name="sonata.admin" manager_type="orm" group="%sonata.media.admin.groupname%" label_catalogue="%sonata.media.admin.media.translation_domain%" label="media" label_translator_strategy="sonata.admin.label.strategy.underscore" icon="%sonata.media.admin.groupicon%"/>
<argument/>
<argument>%sonata.media.admin.media.entity%</argument>
<argument>%sonata.media.admin.media.controller%</argument>
<argument type="service" id="sonata.media.pool"/>
<argument type="service" id="sonata.media.manager.category" on-invalid="null"/>
<call method="setModelManager">
<argument type="service" id="sonata.media.admin.media.manager"/>
</call>
<call method="setTranslationDomain">
<argument>%sonata.media.admin.media.translation_domain%</argument>
</call>
<call method="setTemplates">
<argument type="collection">
<argument key="inner_list_row">@SonataMedia/MediaAdmin/inner_row_media.html.twig</argument>
<argument key="outer_list_rows_mosaic">@SonataMedia/MediaAdmin/list_outer_rows_mosaic.html.twig</argument>
<argument key="base_list_field">@SonataAdmin/CRUD/base_list_flat_field.html.twig</argument>
<argument key="list">@SonataMedia/MediaAdmin/list.html.twig</argument>
<argument key="edit">@SonataMedia/MediaAdmin/edit.html.twig</argument>
</argument>
</call>
</service>
...进入这个 yaml:
sonata.media.admin.media:
class: App\Application\Sonata\MediaBundle\Admin\ORM\MediaAdmin
arguments:
- ''
- '%sonata.media.admin.media.entity%'
- '%sonata.media.admin.media.controller%'
- '@sonata.media.pool'
- '@sonata.media.manager.category'
tags:
- { name: sonata.admin, manager_type: orm, group: admin, label: Seiten }
public: true
calls:
- [ setModelManager, ["@sonata.media.admin.media.manager"] ]
- [ setTranslationDomain, ["%sonata.media.admin.media.translation_domain%"] ]
- [ setTemplates, [ inner_list_row : "@SonataMedia/MediaAdmin/inner_row_media.html.twig", outer_list_rows_mosaic : "@SonataMedia/MediaAdmin/list_outer_rows_mosaic.html.twig", base_list_field : "@SonataAdmin/CRUD/base_list_flat_field.html.twig", list : "@SonataMedia/MediaAdmin/list.html.twig", edit : "@SonataMedia/MediaAdmin/edit.html.twig" ] ]
当我尝试 运行 缓存预热时,yaml 解析得很好。但是,问题是我现在收到此错误消息:
The service "sonata.media.admin.media.template_registry" has a
dependency on a non-existent service "SonataMedia/MediaAdmin/inner_row_media.html.twig".
这对我来说似乎很奇怪,因为供应商文件夹中的管理服务定义版本(在我覆盖它之前工作正常)也具有相同的依赖性。关于出了什么问题,我能做些什么来解决它,有什么想法吗?
定义中的 @
符号通常会告诉编译器查找具有该名称的 service。如果您将它用作模板名称空间,您可能必须 转义 符号。试试这个:
<call method="setTemplates">
<argument type="collection">
<argument key="inner_list_row">@@SonataMedia/MediaAdmin/inner_row_media.html.twig</argument>
<argument key="outer_list_rows_mosaic">@@SonataMedia/MediaAdmin/list_outer_rows_mosaic.html.twig</argument>
<argument key="base_list_field">@@SonataAdmin/CRUD/base_list_flat_field.html.twig</argument>
<argument key="list">@@SonataMedia/MediaAdmin/list.html.twig</argument>
<argument key="edit">@@SonataMedia/MediaAdmin/edit.html.twig</argument>
</argument>
</call>
使用 Sonata 的 Easy Extends 工具,我正在扩展 MediaAdmin 基础 class 并覆盖该 class 的现有服务。为此,我转换了这个 XML 服务定义(在 vendor 文件夹中):
<service id="sonata.media.admin.media" class="%sonata.media.admin.media.class%" public="true">
<tag name="sonata.admin" manager_type="orm" group="%sonata.media.admin.groupname%" label_catalogue="%sonata.media.admin.media.translation_domain%" label="media" label_translator_strategy="sonata.admin.label.strategy.underscore" icon="%sonata.media.admin.groupicon%"/>
<argument/>
<argument>%sonata.media.admin.media.entity%</argument>
<argument>%sonata.media.admin.media.controller%</argument>
<argument type="service" id="sonata.media.pool"/>
<argument type="service" id="sonata.media.manager.category" on-invalid="null"/>
<call method="setModelManager">
<argument type="service" id="sonata.media.admin.media.manager"/>
</call>
<call method="setTranslationDomain">
<argument>%sonata.media.admin.media.translation_domain%</argument>
</call>
<call method="setTemplates">
<argument type="collection">
<argument key="inner_list_row">@SonataMedia/MediaAdmin/inner_row_media.html.twig</argument>
<argument key="outer_list_rows_mosaic">@SonataMedia/MediaAdmin/list_outer_rows_mosaic.html.twig</argument>
<argument key="base_list_field">@SonataAdmin/CRUD/base_list_flat_field.html.twig</argument>
<argument key="list">@SonataMedia/MediaAdmin/list.html.twig</argument>
<argument key="edit">@SonataMedia/MediaAdmin/edit.html.twig</argument>
</argument>
</call>
</service>
...进入这个 yaml:
sonata.media.admin.media:
class: App\Application\Sonata\MediaBundle\Admin\ORM\MediaAdmin
arguments:
- ''
- '%sonata.media.admin.media.entity%'
- '%sonata.media.admin.media.controller%'
- '@sonata.media.pool'
- '@sonata.media.manager.category'
tags:
- { name: sonata.admin, manager_type: orm, group: admin, label: Seiten }
public: true
calls:
- [ setModelManager, ["@sonata.media.admin.media.manager"] ]
- [ setTranslationDomain, ["%sonata.media.admin.media.translation_domain%"] ]
- [ setTemplates, [ inner_list_row : "@SonataMedia/MediaAdmin/inner_row_media.html.twig", outer_list_rows_mosaic : "@SonataMedia/MediaAdmin/list_outer_rows_mosaic.html.twig", base_list_field : "@SonataAdmin/CRUD/base_list_flat_field.html.twig", list : "@SonataMedia/MediaAdmin/list.html.twig", edit : "@SonataMedia/MediaAdmin/edit.html.twig" ] ]
当我尝试 运行 缓存预热时,yaml 解析得很好。但是,问题是我现在收到此错误消息:
The service "sonata.media.admin.media.template_registry" has a dependency on a non-existent service "SonataMedia/MediaAdmin/inner_row_media.html.twig".
这对我来说似乎很奇怪,因为供应商文件夹中的管理服务定义版本(在我覆盖它之前工作正常)也具有相同的依赖性。关于出了什么问题,我能做些什么来解决它,有什么想法吗?
定义中的 @
符号通常会告诉编译器查找具有该名称的 service。如果您将它用作模板名称空间,您可能必须 转义 符号。试试这个:
<call method="setTemplates">
<argument type="collection">
<argument key="inner_list_row">@@SonataMedia/MediaAdmin/inner_row_media.html.twig</argument>
<argument key="outer_list_rows_mosaic">@@SonataMedia/MediaAdmin/list_outer_rows_mosaic.html.twig</argument>
<argument key="base_list_field">@@SonataAdmin/CRUD/base_list_flat_field.html.twig</argument>
<argument key="list">@@SonataMedia/MediaAdmin/list.html.twig</argument>
<argument key="edit">@@SonataMedia/MediaAdmin/edit.html.twig</argument>
</argument>
</call>