【发布时间】:2023-03-30 17:50:02
【问题描述】:
我有一个ModelAutocompleteType 类型的表单字段,它应该显示由相关管理员的“搜索”数据网格字段过滤的结果:
class OperationAdmin extends AbstractAdmin
{
// ...
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('business', ModelAutocompleteType::class, [
'label' => 'Business',
'property' => 'search'
]);
}
// ...
}
在这个相关的“业务”管理员中,我定义了几个过滤器:
class BusinessAdmin extends AbstractAdmin
{
// ...
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('search', CallbackFilter::class, [
'label' => 'Search',
'show_filter' => true,
'advanced_filter' => false,
'callback' => function($qb, $alias, $field, $value) {
if (!$value['value']) return;
// ...
return true;
}
])
->add('state', ChoiceFilter::class, [
'label' => 'State',
'show_filter' => true,
'advanced_filter' => false,
'field_options' => ['choices' => Business::STATES],
'field_type' => 'choice'
]);
}
// ...
}
现在,如果我使用 getFilterParameters 设置默认的“状态”数据网格字段值,以在初始页面加载时按状态过滤业务列表:
public function getFilterParameters()
{
$this->datagridValues = array_merge([
'state' => ['type' => '', 'value' => 'active']
], $this->datagridValues);
return parent::getFilterParameters();
}
即使 property 设置为 search,相关的 ModelAutocompleteType 表单字段的结果也将被“状态”字段过滤。
如何将默认过滤器值仅应用于列表视图而不是其他内容?为什么ModelAutocompleteType 结果依赖于其他数据网格字段,即使属性设置为一个?
【问题讨论】:
标签: symfony sonata-admin symfony-3.4 sonata symfony-sonata