-1

我有一个实体“文件”,我想在文件系统中显示现有相关文件的布尔值。为了检查存在需要使用我的 DirectoriesManager 服务,它可以检测到它使用这个文件实体。为这个任务配置 ListMapper 的正确方法是什么,或者只能通过重写一些奏鸣曲模板来解决?
所以,我做了什么:

配置.yml

twig:
    debug: '%kernel.debug%'
    strict_variables: '%kernel.debug%'
    globals:
        container: '@service_container'

我的奏鸣曲管理课

protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->add('id')
        ->add('exist', null, [
            'template' => 'AdminBundle:Files:exist.html.twig'
        ]);
}

而我的模板存在.html.twig

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}

{% block field %}

{% set value = container.get('dirs_manager').entityFileExist(object) %}

{% if value %}
    {% set text = 'label_type_yes'|trans({}, 'SonataAdminBundle') %}
{% else %}
    {% set text = 'label_type_no'|trans({}, 'SonataAdminBundle') %}
{% endif %}

{% if  value %}
    {% set class = 'label-success' %}
{% else %}
    {% set class = 'label-danger' %}
{% endif %}

<span class="label {{ class }}">{{ text }}</span>
{% endblock %}

其中 service DirectoriesManager 有别名 dirs_manager。

我知道在 Yii2 中可以为显示任何值的所有模型配置带有回调的 GridView 小部件列。可能我可以在 ListMapper 中制作类似的东西吗?

4

1 回答 1

0

我会为教义的 postLoad 事件添加侦听器回调。并且在该回调中将使用该服务并设置相应的布尔实体的值。

于 2017-11-28T10:04:50.107 回答