فهرست منبع

add filter choice type

Thomas Rabaix 14 سال پیش
والد
کامیت
6916ecdd29
2فایلهای تغییر یافته به همراه3 افزوده شده و 8 حذف شده
  1. 1 1
      Builder/ORM/DatagridBuilder.php
  2. 2 7
      Filter/ORM/ChoiceFilter.php

+ 1 - 1
Builder/ORM/DatagridBuilder.php

@@ -46,6 +46,7 @@ class DatagridBuilder implements DatagridBuilderInterface
         'bigint'     =>  'Sonata\\AdminBundle\\Filter\\ORM\\IntegerFilter',
         'decimal'    =>  'Sonata\\AdminBundle\\Filter\\ORM\\IntegerFilter',
         'callback'   =>  'Sonata\\AdminBundle\\Filter\\ORM\\CallbackFilter',
+        'choice'     =>  'Sonata\\AdminBundle\\Filter\\ORM\\ChoiceFilter',
     );
 
     public function __construct(FormFactory $formFactory)
@@ -116,7 +117,6 @@ class DatagridBuilder implements DatagridBuilderInterface
      */
     public function getFilterFieldClass(FieldDescriptionInterface $fieldDescription)
     {
-
         if ($fieldDescription->getOption('filter_field_widget', false)) {
             $class = $fieldDescription->getOption('filter_field_widget', false);
         } else {

+ 2 - 7
Filter/ORM/ChoiceFilter.php

@@ -18,16 +18,12 @@ class ChoiceFilter extends Filter
 {
     public function filter($queryBuilder, $alias, $field, $value)
     {
-        if (!is_array($value)) {
-            return;
-        }
-
         if ($this->getField()->getAttribute('multiple')) {
-            if (in_array('all', $value)) {
+            if (!is_array($value) || count($value) == 0) {
                 return;
             }
 
-            if (count($value) == 0) {
+            if (in_array('all', $value)) {
                 return;
             }
 
@@ -35,7 +31,6 @@ class ChoiceFilter extends Filter
                 $alias,
                 $field
             ), $value));
-
         } else {
 
             if ($value === null || $value == 'all') {