Sonata Admin Bundle 在编辑时丢失过滤器设置

Sonata Admin Bundle loosing filter settings on edit

根据索纳塔手册,我为一些实体创建了一个标准的简单管理。 问题是配置的过滤器在编辑实体时会丢失。假设我设置了 3 个过滤器值,然后单击一个实体进行编辑。 "Save" 和操作 "Back to list" 都没有让我回到筛选列表。连分页又从1开始。

如何保留设置的过滤器?

这是管理员示例 class:

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)将始终生成您预配置的过滤器,您可以在每个管理员-class.

上定义这些过滤器

只需根据配置启用持久过滤器。请注意,这些会保留到您的用户会话中,这意味着它们只会在您按下按钮 "reset filters".

时重置或更改

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

sonata_admin:
    persist_filters: true

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