소스 검색

Fix Boolean and String filters

Thomas Rabaix 14 년 전
부모
커밋
d8a5a072a1
3개의 변경된 파일7개의 추가작업 그리고 14개의 파일을 삭제
  1. 3 4
      Filter/ORM/BooleanFilter.php
  2. 1 1
      Filter/ORM/NumberFilter.php
  3. 3 9
      Filter/ORM/StringFilter.php

+ 3 - 4
Filter/ORM/BooleanFilter.php

@@ -28,11 +28,10 @@ class BooleanFilter extends Filter
     public function filter($queryBuilder, $alias, $field, $value)
     {
         if ($this->getField()->getAttribute('multiple')) {
-
             $values = array();
             foreach ($value as $v) {
-                if ($v === null) {
-                    return;
+                if (!in_array($v, array(BooleanType::TYPE_NO, BooleanType::TYPE_YES))) {
+                   continue;
                 }
 
                 $values[] = $v ==  ((int)$value == BooleanType::TYPE_YES) ? 1 : 0;
@@ -46,7 +45,7 @@ class BooleanFilter extends Filter
 
         } else {
 
-            if ($value === null) {
+            if (!in_array($value, array(BooleanType::TYPE_NO, BooleanType::TYPE_YES))) {
                 return;
             }
 

+ 1 - 1
Filter/ORM/NumberFilter.php

@@ -45,7 +45,7 @@ class NumberFilter extends Filter
      */
     private function getOperator($type)
     {
-         $choices = array(
+        $choices = array(
             NumberType::TYPE_EQUAL            => '=',
             NumberType::TYPE_GREATER_EQUAL    => '>=',
             NumberType::TYPE_GREATER_THAN     => '>',

+ 3 - 9
Filter/ORM/StringFilter.php

@@ -22,20 +22,14 @@ class StringFilter extends Filter
      */
     public function filter($queryBuilder, $alias, $field, $value)
     {
-        if ($value == null) {
+        if ($value == null || strlen($value) == 0) {
             return;
         }
 
-        $value  = sprintf($this->getOption('format'), $value);
-
         // c.name LIKE '%word%' => c.name LIKE :fieldName
-        $queryBuilder->andWhere(sprintf('%s.%s LIKE :%s',
-            $alias,
-            $field,
-            $this->getName()
-        ));
+        $queryBuilder->andWhere(sprintf('%s.%s LIKE :%s', $alias, $field, $this->getName()));
 
-        $queryBuilder->setParameter($this->getName(), $value);
+        $queryBuilder->setParameter($this->getName(), sprintf($this->getOption('format'), $value));
     }
 
     /**