php - 如何在 Sonata Admin 中显示/隐藏某些行的操作

标签 php symfony sonata-admin

我正在使用 Sonata Admin。是否可以在同一个 ListView 中只显示某些行而不显示其他行的操作?

例如,假设我有一个带有“事件”字段的用户实体。我只想为非活跃用户显示“删除”操作,而不是为活跃用户显示。我该怎么做?

最佳答案

是的,你可以,在你的configureListFields管理类操作中,当在$listMapper上添加_action列时,你应该为delete添加模板选项操作,然后您可以在该模板中实现一些逻辑:

$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 语句中的条件 而不是 object.isActive,因此这是您应用附加 if 逻辑的地方。

关于php - 如何在 Sonata Admin 中显示/隐藏某些行的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32071312/

相关文章:

php - mysql_fetch_assoc() 期望参数 1 是资源,在第 9 行的 C :\xampp\htdocs\qcc\truckdelivery. php 中给出的 bool 值没有选择数据库

php - 自定义数据库连接在 php 中不起作用

windows - Symfony2 : can't duplicate site because of strange folders architecture

php - 如何将参数传递给 Symfony2 中的验证约束 - 在 yml 中

php - 在 eclipse PDT 中调试期间不显示值

php - Faker 和 Laravel 5

php - Symfony2 上下文错误异常 : Warning: filemtime(): stat failed

php - 根据 SonataAdminBundle 中的其他更改字段

php - 奏鸣曲管理员 : Use multiple document classes (types)

symfony - symfony 2.4 中奏鸣曲管理中关系对象的数据网格过滤器作为文本字段(而不是下拉列表)