2016-08-24 4 views
0

画像を使用して全く異なる種類のフィルタを使用するには、Sonata AdminBundleのフィルタをオーバーライドする必要があります。Symfony2 - Override Sonata AdminBundle filter

のためには、今では、HTMLフォームです:

/** 
* @param DatagridMapper $datagridMapper 
*/ 
protected function configureDatagridFilters(DatagridMapper $datagridMapper) 
{ 
    $datagridMapper 
     ->add('orderIdentifier', null, ['label' => 'N°']) 
     ->add('orderDeliveryAddress', null, ['label' => 'Client']) 
     ->add('partner.name', null, ['label' => 'Partenaire']) 
     ->add('postal', null, ['label' => 'Code postal']) 
     ->add('product.code', null, ['label' => 'Produit']) 
     ->add('volume', null, ['label' => 'Volume', 'template']) 
     ->add('deliveryType', null, ['label' => 'Type de livraison']) 
     ->add('createdAt', null, ['label' => 'Date']) 
     ->add('state', null, array('show_filter' => true), 'choice', array(
       'choices' => $this->getConfigurationPool()->getContainer()->get('fm.command.order_status_manager')->countAllOrderByStatus(), 
     )) 
    ; 
} 

どのように私は完全にこのメソッドをオーバーライドすることができますか?

+0

をあなたはオーバーライドとはどういう意味ですか?同じ設定を使用する新しいフィルタが必要ですか? –

+0

@DmitryMalyshenko全く新しいフィルターが必要です。しかし、形ではありません。これは 'href'リンクを持つフィルターになります。それが可能だと思いますか? – Kevin

答えて

0

私はテンプレートをオーバーライドする方法を見つけました:

私たちは、私の新しいロジックを追加するためのコントローラをオーバーライドします。

namespace Site\AdminBundle\Controller; 

use Sonata\AdminBundle\Controller\CRUDController as Controller; 

class CommandManagementController extends Controller 
{ 
    public function listAction() 
    { 
     $request = $this->getRequest(); 

     $this->admin->checkAccess('list'); 

     $preResponse = $this->preList($request); 
     if ($preResponse !== null) { 
      return $preResponse; 
     } 

     if ($listMode = $request->get('_list_mode')) { 
      $this->admin->setListMode($listMode); 
     } 

     $datagrid = $this->admin->getDatagrid(); 
     $formView = $datagrid->getForm()->createView(); 

     // set the theme for the current Admin Form 
     $this->get('twig')->getExtension('form')->renderer->setTheme($formView, $this->admin->getFilterTheme()); 

     return $this->render('Admin/Command/list.html.twig', array(
      'action' => 'list', 
      'form' => $formView, 
      'datagrid' => $datagrid, 
      'csrf_token' => $this->getCsrfToken('sonata.batch'), 
     ), null, $request); 
    } 
} 

小枝テンプレート:

{% extends 'SonataAdminBundle:CRUD:base_list.html.twig' %} 

{% block list_filters %} 
     {# Your HTML here #} 
{% endblock %} 
関連する問題