2012-05-31 5 views
0

두 개의 필드 (하나는 자유 형식 텍스트 이고 다른 하나는 선택)가있는 양식 필터를 생성하라는 요청이 있습니다. 선택 항목의 값은 텍스트 값을 처리하는 방법을 기준으로 결정합니다.사용자 정의 addXXXColumnCriteria의 다른 필터 값에 액세스하는 방법은 무엇입니까?

어느 필드에 대해서도 사용자 지정 addXXXColumnCriteria를 만들 수 있지만이 함수 내에서 다른 필드에 어떻게 액세스 할 수 있습니까?

답변

2

addXXXColumnCriteria를 사용하지 말고 FormFilter doBuildCriteria (Propel) 또는 doBuildQuery (Doctrine) 메소드를 덮어 쓰는 것이 좋습니다. 저는 Propel을 사용한 적이 없지만 Doctrine만큼이나 효과가 있다고 생각합니다. 예를 들어

교리에 대한

class yourPropelFormFilter extends anyKindOfSfFormFilterPropel { 

    public function doBuildCriteria(array $values) { 

    $criteria = parent::doBuildCriteria($values); 

    // ... change the criteria behaviour with the $values array (do some print_r to $values to see how the data array is formatted) 

    return $criteria; 
    } 

} 

합니다 (getRootAlias ​​쿼리 방법을 사용하는 기억) :

class yourDoctrineFormFilter extends anyKindOfSfFormFilterDoctrine { 

    public function doBuildQuery(array $values) { 
     $q = parent::doBuildQuery($values); 
     $rootAlias = $q->getRootAlias(); 

     if(...) { 
     $q->innerJoin($rootAlias.'.RelationX rx') 
      ->addWhere('rx.value = ?',$values['...']); 
     } 

     return $q; 
    } 

} 

, 기준/쿼리 수정 된 개체를 반환하는 것을 기억하십시오!

관련 문제