Symfony Sonata管理包在编辑时丢失过滤器设置

Symfony Sonata管理包在编辑时丢失过滤器设置,symfony,sonata-admin,Symfony,Sonata Admin,根据索纳塔手册,我为一些实体创建了一个标准的简单管理员。 问题在于,编辑enity时,配置的筛选器丢失。假设我设置了3个过滤器值,然后单击一个实体对其进行编辑。无论是“保存”还是“返回列表”操作都不会使我返回到已筛选列表。偶数分页再次从1开始 如何保持设置的过滤器 这是一个示例管理类: namespace AppBundle\Admin; use Sonata\AdminBundle\Admin\AbstractAdmin; use Sonata\AdminBundle\Datagrid\L

根据索纳塔手册,我为一些实体创建了一个标准的简单管理员。 问题在于,编辑enity时,配置的筛选器丢失。假设我设置了3个过滤器值,然后单击一个实体对其进行编辑。无论是“保存”还是“返回列表”操作都不会使我返回到已筛选列表。偶数分页再次从1开始

如何保持设置的过滤器

这是一个示例管理类:

namespace AppBundle\Admin;


use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;

/**
 * Description of OrtAdmin
 *
 * @author markus
 */
class OrtAdmin extends AbstractAdmin{
protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
            ->add('name', 'text');

}

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $datagridMapper->add('name');
}

protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
            ->addIdentifier('name', 'string');

}

//Remove some export formats
public function getExportFormats() {
    return array(
        'csv', 'xls'
    );
}

//No batch actions
public function getBatchActions() {
    $actions = parent::getBatchActions();
    unset($actions['delete']);

    return $actions;
}    
}

您的筛选器在离开列表视图后丢失。重新打开列表(不返回相同的URL)将始终导致预配置的过滤器,您可以在每个管理类上定义这些过滤器

只需为每个配置启用持久过滤器。请注意,这些内容将被持久化到用户的会话中,这意味着只有当您按下“重置过滤器”按钮时,它们才会重置或更改

您可以像这样轻松地激活该选项:

sonata_admin:
    persist_filters: true

没有专门的文档,但您可以在中找到该选项。

您可以显示EntityAdmin类吗?只是编辑了文章,添加了一个类。是的,设置“持久化过滤器”选项就成功了!谢谢@马库斯克。很高兴听到!你能接受我的答案吗,这样其他人就能找到它(如果他们也在寻找相同的答案)?谢谢:-)谢谢!虽然有点误导,因为它甚至保留了页码,但仍然比官方文档中所述的做得更好:在官方文档中,我们被告知使用
$this->admin->getFilterParameters()
,它只包含分页器过滤器
\u sort\u order
\u sort\u by
\u页面
\u每页
,并且在
SomeAdmin::configureDatagridFilters()
中未配置这些。将分页过滤器从配置的过滤器中分离出来将是一件很好的事情。