2013-07-24 9 views
5

Mam klasy administratora, który ma tę definicję listFields:Widok listy administratorów Sonaty, aby więcej nagłówków sortowało przyciski?

protected function configureListFields(ListMapper $listMapper) 
{ 
    $listMapper 
      ->addIdentifier('type') 
      ->add('created_at', 'datetime') 
      ->add('updated_at', 'datetime') 
      ->add('created_by') 
      ->add('updated_by') 
      ->add('is_active') 
      ->add('is_deleted') 
      ->add('_action', 'actions', 
        array(
       'actions' => array(
        'view' => array(), 
        'edit' => array(), 
        'delete' => array() 
       ) 
      )) 
    ; 

} 

Tylko „Typ” kolumna jest sortable - IE, po najechaniu na nagłówku tabeli dla „typu” widzisz asc/desc strzałkę i może kliknąć, aby zmienić kolejność wierszy na podstawie tej kolumny.

Jak mogę to pokazać w większej ilości kolumn?

Próbowałem dodać sortable = true, ale potem próbuję dołączyć do innej jednostki.

+0

mógłby pomóc: http://stackoverflow.com/questions/8120787/sonata-admin-bundle-order –

+0

Czytałem, że jeden, to tylko o ustawienie domyślne pole sortowania. Chcę sortować więcej kolumn. (Nie w tym samym czasie, po prostu chcę opcję sortowania innych kolumn zamiast pierwszej) – Jessica

+0

@Jessica Czy byłeś w stanie rozwiązać problem .. ?? Jeśli tak, udostępnij je tutaj. Mam do czynienia z tym samym problemem. – GBRocks

Odpowiedz

11
# we can sort the related entity properties like. This following condition site is an entity 

protected function configureListFields(ListMapper $listMapper) 
{ 
    $listMapper 
     ->addIdentifier('name') 
     ->add('site',null,array(
      'sortable'=>true, 
      'sort_field_mapping'=> array('fieldName'=>'name'), 
      'sort_parent_association_mappings' => array(array('fieldName'=>'site') 
      ))) 
    ; 
} 

to sposób sortowania powiązanych obiektów w konfiguracji listy. Wystarczy sprawdzić to Sort list by an entity field

+0

To się udało, dziękuję. – Jessica

0

Musisz dodać opcję sortable na polu.

Oto kod używam:

protected function configureListFields(ListMapper $listMapper) { 
    $listMapper 
     ->addIdentifier('name') 
     ->add('application', null, array('sortable' => true)) 
     ->add('isActive', null, array('editable' => true)) 
     ->add('_action', 'actions', array(
      'actions' => array(
       'view' => array(), 
       'edit' => array(), 
       'delete' => array(), 
      ) 
     )) 
    ; 
} 

Nadzieja to pomaga

+2

"Próbowałem dodać sortable = true, ale potem próbuje dołączyć do innej Entity." – Jessica

+0

To jest dokładny błąd, który dostaję używając tego kodu Złodziej krytyczny błąd: Argument 1 przekazany do Sonata \ DoctrineORMAdminBundle \ Datagrid \ ProxyQuery :: entityJoin() musi być tablicą typów, null podana, wywołana/vagrant/dostawca/sonata -project/doctrine-orm-admin-bundle/Sonata/DoctrineORMAdminBundle/Datagrid/ProxyQuery.php na linii 140 i zdefiniowane w/vagrant/vendor/sonata-project/doctrine-orm-admin-bundle/Sonata/DoctrineORMAdminBundle/Datagrid/ProxyQuery .php line 245 – Jessica

4

Sonata będzie mógł uporządkować pole jeżeli wie, jakiego typu to jest; jeśli podasz powiązany obiekt, nie będzie możliwe sortowanie.

Oto configureListFields() od podmiotu „zdarzenie” która ma tytuł i jest związany z innym podmiotem „City”.

protected function configureListFields(ListMapper $listMapper) 
{ 
    $listMapper 
      ->addIdentifier('title') 
      ->add('city') 
} 

Link zostanie utworzony do miasta, ale to nie będzie sortable, zamiast dodawania konkretnego pola z "City" będzie działać:

protected function configureListFields(ListMapper $listMapper) 
{ 
    $listMapper 
     ->addIdentifier('title') 
     ->add('city.name') 
} 

Teraz sortable.

+0

Ale nie jest już linkiem do strony edycji dla tego obiektu. – Jessica