2017-03-11 18 views
1

ソナタのハンドブックに基づいて、いくつかのエンティティに対して標準的な管理者を作成しました。 問題は、エンティティを編集するときに、設定されたフィルタが失われることです。 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; 
}  
} 
+0

EntityAdminクラスを表示できますか? –

+0

投稿を編集してクラスを追加しました。 –

答えて

4

あなたのフィルタは、リストビューを出た後に失われます。リストを再度開くと(同じURLに戻ることなく)、事前設定されたフィルタが常に生成されます。このフィルタは、Adminクラスごとに定義できます。

設定ごとに永続フィルタを有効にするだけです。あなたのユーザーのセッションにそれらが残っていることに注意してください。これは、「リセットフィルター」ボタンを押した場合にのみリセットまたは変更されることを意味します。

あなたは簡単にこのようなオプションを有効にすることができます。

sonata_admin: 
    persist_filters: true 

そこには、専用のドキュメントはありませんが、あなたはSonataAdmin Full Configuration Optionsでオプションを見つけることができます。

+0

ええ、 "persists_filters"オプションを設定すると、そのトリックがやりました!ありがとう! @ MarkusK。 –

+0

聞いてうれしい!あなたは私の答えを受け入れてください、他の人がそれを見つけることができますか(彼らが同じものを探しているなら)?ありがとうございました :-) –

関連する問題