2016-08-30 10 views
1

Ich möchte je nach Objektattribut in der Liste unterschiedliche Aktionen ausführen.SonataAdminBundle Verschiedene Aktionen je nach Objektattribut auflisten

Meine Benutzerklasse hat ein boolesches Attribut, das ich mit einer benutzerdefinierten Aktion ändern kann, die spezielle Aktionen wie das Senden von E-Mail haben wird.

Wie würde ich unterschiedliche Aktionen für jedes Objekt der Liste abhängig von diesem booleschen Wert anzeigen? Wie eine editierbare boolesche, aber für Aktion Schaltflächen. Entschuldigung für mein Englisch und vielen Dank voraus.

Antwort

1

Sie sollten nehmen a a aussehen dies: SonataAdminBundle custom rendering of text fields in list

Definieren Sie einen neuen benutzerdefinierten Typ für die Liste und verwenden Sie es Ihre Boolesche Attribut anzuzeigen:

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

Und Ihre neue Art Vorlage:

{% 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 %} 

Bei Bedarf können Sie auf das aktuelle Objekt und den Administrator in Ihrer Vorlage zugreifen:

{% 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 %} 

Weitere Informationen darüber, was Sie in der Vorlage zugreifen können, werfen Sie einen Blick auf die alle default list templates of Sonata:

+0

Es funktionierte :) Vielen Dank –

Verwandte Themen