당신이 발견 한 게시물과 같은 가상 컬럼을 사용하여이 작업을 수행 할 수 있습니다. 가상 열은 symfony에서 제공하는 자동 생성 필터를 사용하여 필터링 할 새 기준을 추가하는 방법입니다. 그것은 다음과 같이 작동
1 - 관리자 모듈의 generator.yml로 이동 만듭니다 가상 컬럼의 이름을 추가하고
<!-- apps/backend/modules/module_name/config/generator.yml -->
filter:
[virtual_column_name, and, other, filter, columns]
2를 추가 - 당신의 lib 디렉토리/필터/{ TABLENAME} FormFilter.class.php (나는 HeadingFormFilter해야합니다 귀하의 경우 생각) 당신이 구성에서 가상 컬럼을 정의해야합니다() 방법
public function configure()
{
//Type of widget (could be sfWidgetFormChoice with bank names)
$this->widgetSchema['virtual_column_name'] = new sfWidgetFormInputText(array(
'label' => 'Virtual Column Label'
));
//Type of validator for filter
$this->validatorSchema['virtual_column_name'] = new sfValidatorPass(array ('required' => false));
}
3 -) (을 getFields를 오버라이드 (override) 그 클래스의 필터를 정의하고 필터 함수를 설정하십시오.
public function getFields()
{
$fields = parent::getFields();
//the right 'virtual_column_name' is the method to filter
$fields['virtual_column_name'] = 'virtual_column_name';
return $fields;
}
4 - 마지막으로 필터 메소드를 정의해야합니다.
public function addVirtualColumnNameColumnQuery($query, $field, $value)
{
//add your filter query!
//for example in your case
$rootAlias = $query->getRootAlias();
$query->innerJoin($rootAlias . '.ImportProfile ip')
->andWhere('ip.BankId = ?', $value);
//remember to return the $query!
return $query;
}
이 완료 그래서,이 방법은 추가 한 후 이름을 지정해야합니다 ... ColumnQuery 패턴, 우리의 경우 addVirtualColumnNameColumnQuery (P없는 행복한 이름 선택)해야합니다! bank_id로 필터를 알 수 있습니다.
내 대답을 확인해 주시겠습니까? – Pabloks
symfony 버전 1.1.4 이상에 대해이 샘플을 작성한 것 같아서 어떤 버전에서 완성 되었습니까? – gacon
Symfony 1.4.1 이상에서 제작되었습니다. sf 2.0이 아닙니다. – Pabloks