奏鸣曲默认过滤器值

Posted

技术标签:

【中文标题】奏鸣曲默认过滤器值【英文标题】:Sonata default filter value 【发布时间】:2019-08-18 00:14:11 【问题描述】:

我的方法configureDatagridFilters() 中有一个名为assignee 的属性。当我的管理员的列表视图首次加载时,我想将此属性的值设置为当前用户。

我试过了:

public function getFilterParameters()

    $parameters = parent::getFilterParameters();

    $parameters['assignee'] = [
        'value' => $this->getUser(),
    ];

    return $parameters;

以及array_merge。他们都没有实现我所追求的,它仍然只是向我显示默认/整个列表。

我尝试添加一个类型,但不清楚该类型是什么,因为我看到的一些例子就像 EntityType::class 和其他只是一个数字 3

【问题讨论】:

【参考方案1】:

所以我想出了如何将过滤器默认设置为当前用户。

我的过滤器是EntityType::class,类别为User::class。为了使上面的代码 sn-p 工作,您必须将值设置为用户 ID,而不是像这样的用户对象:'value' => $this->getUser()->getId()

所以完整的方法是:

public function getFilterParameters()

    $parameters = parent::getFilterParameters();

    $parameters['assignee'] = [
        'value' => $this->getUser()->getId(),
    ];

    return $parameters;

【讨论】:

以上是关于奏鸣曲默认过滤器值的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2 - 奏鸣曲 Datagrid 过滤器操作符转换为教义_orm_class 字段失败

抽象类的奏鸣曲管理员:如何按子类属性过滤

奏鸣曲管理员获取所有列表项

导致具有多个参数的过滤列表的自定义操作?

Kendo UI 默认网格过滤器值

ruby ActiveAdmin过滤器中的默认值