SonataAdminBundle根据对象属性列出不同的操作

时间:2016-08-30 10:52:03

标签: list symfony sonata-admin

我希望根据List中的object属性执行不同的操作。

我的User类有一个布尔属性,我使用自定义操作进行更改,该操作将执行特殊操作,例如发送电子邮件。

如何根据布尔值为列表中的每个对象显示不同的操作? 像一个可编辑的布尔值,但对于动作按钮。 对不起我的英语,非常感谢。

1 个答案:

答案 0 :(得分:1)

你应该看看这个:SonataAdminBundle custom rendering of text fields in list

为列表定义新的自定义类型,并使用它来显示布尔属性:

$listMapper
    ->add('my_boolean', 'custom_type')

您的新类型模板:

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

{% block field%}
    {% if value == 1 %}
    <a href="...">Change to 0</a>
    {% else %}
    <a href="...">Change to 1</a>
    {% endif %}
{% endblock %}

如果需要,您可以访问模板中的当前对象和管理员:

{% set editable = admin.isGranted('EDIT', object) and object.foo == true %}
{% if editable == true %}
    {% if value == 1 %}
    <a href="...">Change to 0</a>
    {% else %}
    <a href="...">Change to 1</a>
    {% endif %}
{% else %}
    {{ value }}
{% endif %}

有关您可以在模板中访问的内容的详细信息,请查看所有default list templates of Sonata