2011-01-13 3 views
0

generator.yml에서 실행되는 모듈 범위가 있습니다. 그 중 일부에서는 기본적으로 Status : CLOSED (상태 범위의 마지막 부분) 레코드를 숨기려고합니다. 물론 사용자가 CLOSED에 대해 필터를 걸면이 레코드를 보여주고 싶습니다.필드가 필터링되지 않은 경우 모델에 쿼리를 적용하는 방법

특정 table_method에서 andWhere ('status_id =?', Status :: CLOSED)를 적용하는 것이 좋겠지 만 모델 내에서 모듈의 필터에 액세스하려면 어떻게해야합니까?

더 좋은 방법이 있나요?

답변

0

을 나는 당신이 할 수있는 생각 예를 들어 새로운 필드를 만든다. 'showClosedStatus는' 는

공공 기능 getFilterDefaults() {
반환 배열 ('showClosedStatus'=> '거짓'으로 generatorconfiguration에 getFilterDefaults()를 추가 (당신은 형태로 위젯 및 유효성 검사기를 추가해야 할 것이다));
}

는 다음 함수 addShowClosedStatusColumnQuery 추가 (Doctrine_Query $ q를 $ 필드, 가치 $) {
경우 ($ 값 == false)를 {
$ Q-> andWhere ('상태! = 폐쇄')
}

+0

해결 방법으로 사용합니다. 기본값이 true 인 경우에만 작동하며, 그렇지 않으면 addShowClosedStatusCOlumnQuery에 도달하지 못합니다. 단일 필드로 작업하는 것이 좋겠지 만 지금은 충분합니다. – jdog

0

나는 무엇을하고 싶은지 확실하지 않습니까? 필터 중 하나의 상태를 기본값으로 설정합니까?

그렇다면 매우 간단합니다. 애플 리케이션 // 모듈 // lib 디렉토리/GeneratorConfiguration.php "getFilterDefaults"라는 클래스에 메소드를 추가 : 당신을 위해

class modulenameGeneratorConfiguration extends BaseModulenameGeneratorConfiguration 
{ 
    public function getFilterDefaults() { 
    return array('status' => 'something'); 
    } 

} 

만 차이가이 필드의 값의 배열에서 필터링 할 수 있습니다처럼 소리이다 문제. 결코 이것을 시도 할 이유가 없었지만, 무언가 대신에 값의 배열을 반환하는 것이 그것을 수행하는 방법 일 것이라고 생각했습니다.

+0

아니, 난 쿼리를 적용 할 필요가! = 선택한 필터가 아닌 = – jdog

0

OP의 의견에 따라 대체 대답입니다. 당신은, 쿼리가 주어진 필드에 구성되는 방법을 조정 lib 디렉토리/필터/교리의 관련 필터 양식을 찾아서이 같은 방법을 추가하려면

:

public function addStatusColumnQuery(Doctrine_Query $q, $field, $value) { 
    // do whatever you want here - ie: check $value, and add the query conditions you need to $q. 

    return $q; 
} 
+0

CLOSED 내가 원하는 것을 매우 가까이 보이는, 필터에 폐쇄 문제는 필터를 선택하지 않은 경우이 함수가 호출되지이다 - 그래도 나는 그때를 필터링해야합니다. 내가 볼 수있는 흐름의 모든 문서? – jdog

+0

또한이 http://www.symfony-project.org/tutorial/1_4/en/whats-new#chapter_a2fae23c9403b0e9ec99806fccf6b53e_sub_sfformfilterdoctrine을 발견했지만 필터 시드를 넣을 곳이 명확하지 않습니다. table_method를 변경하면 같은 문제가 발생합니다. – jdog

관련 문제