2013-07-24 7 views
5

Ich habe eine Admin-Klasse, die diese Definition von listfields hat:Sonata Admin List View, machen mehr Header Sortierschaltflächen?

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() 
       ) 
      )) 
    ; 

} 

Nur der Spalte „Typ“ ist sortierbar - IE, wenn Sie über den Tabellenkopf für „Typ“ schweben Sie eine asc/ab Pfeil sehen und können klicken, um die Zeilen basierend auf dieser Spalte neu zu sortieren.

Wie bekomme ich das auf mehr Spalten angezeigt?

Ich habe versucht, sortable = true hinzuzufügen, aber dann versucht es, sich mit einer anderen Entity zu verbinden.

+0

helfen könnte: http://stackoverflow.com/questions/8120787/sonata-admin-bundle-order –

+0

Ich habe gelesen, dass man, es ist nur über das Standard-Sortierfeld festlegen. Ich möchte mehr Spalten sortieren lassen. (Nicht zur gleichen Zeit, ich möchte nur die Option, andere Spalten anstelle der ersten zu sortieren) – Jessica

+0

@Jessica Konnten Sie das Problem lösen .. ?? Wenn ja, bitte teilen Sie es hier. Ich stehe vor demselben Problem. – GBRocks

Antwort

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') 
      ))) 
    ; 
} 

So sortieren Sie die zugehörigen Entitäten in der Listenkonfiguration. einfach überprüfen diese Sort list by an entity field

+0

Das ist es, danke. – Jessica

0

Sie müssen sortable Option auf dem Feld hinzufügen.

Hier ist der Code ich verwende:

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(), 
      ) 
     )) 
    ; 
} 

this helps

+2

"Ich habe versucht, sortable = true hinzuzufügen, aber dann versucht es, sich einer anderen Entity anzuschließen." – Jessica

+0

Das ist der genaue Fehler, den ich mit diesem Code erhalte Abnehmbarer Fataler Fehler: An Sonata \ DoctrineORMAdminBundle \ Datagrid \ ProxyQuery :: entityJoin() übergebenes Argument 1 muss vom Typ array sein, null gegeben, in/vagrant/vendor/sonata aufgerufen -project/doctrine-orm-admin-bundle/Sonata/DoctrineORMAdminBundle/Datagrid/ProxyQuery.php in Zeile 140 und in/vagrant/vendor/Sonata-Projekt/doctrine-orm-admin-bundle/Sonata/DoctrineORMAdminBundle/Datagrid/ProxyQuery definiert .php line 245 – Jessica

4

Sonata Lage sein wird, ein Feld zu sortieren, wenn es, was es weiß Typ ist; Wenn Sie eine verbundene Entität auflisten, ist es unmöglich zu sortieren.

Hier ist die configureListFields() von einer Entität „Ereignisse“, die einen Titel hat und zu einem anderen Unternehmen verbunden ist „City“.

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

wird ein Link auf die Stadt erstellt werden, aber es wird nicht sortierbar sein, anstatt ein bestimmtes Feld von „City“ wird funktionieren und fügte hinzu:

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

es ist jetzt sortierbar.

+0

Aber ist nicht mehr ein Link zur Bearbeitungsseite für diese Entität. – Jessica