簡體   English   中英

如何在Sonata Admin中顯示/隱藏某些行的操作

[英]How to show/hide an action for some rows in Sonata Admin

我正在使用Sonata Admin。 是否可以在同一列表視圖中顯示僅針對某些行而不是其他行顯示的操作?

例如,假設我有一個具有“活動”字段的用戶實體。 我想僅針對非活動用戶顯示“刪除”操作,而不是針對活動用戶。 我怎樣才能做到這一點?

是的,您可以在configureListFields管理類操作中,在$ listMapper上添加_action列時,您應該為刪除操作添加模板選項,然后您可以在該模板中實現一些邏輯:

$listMapper
    ...
    ->add('_action', 'actions', array(
        'actions' => array(
            'delete' => array(
                'template' => 'YourAdminBundle:List:list_delete_action.html.twig',
            ),
        ),
    ));

然后在list_delete_action.html.twig中:

{% if admin.isGranted('DELETE', object) and admin.hasRoute('delete') and not object.isActive %}
<a href="{{ admin.generateObjectUrl('delete', object) }}" class="btn btn-sm btn-default delete_link" title="{{ 'action_delete'|trans({}, 'SonataAdminBundle') }}">
    <i class="glyphicon glyphicon-remove"></i>
    {{ 'action_delete'|trans({}, 'SonataAdminBundle') }}
</a>
{% endif %}

在此模板中,您將定義object ,即每個列表行的實體,因此您可以使用其getter從您的實體獲取內容。 請注意if語句中的條件and not object.isActive ,因此這是您應用附加if邏輯的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM