symfony framework forum: symfony 1.3 and 1.4 => Admin generator, filters and I18n - 1 views
-
Fernando Vega on 16 Feb 11"class MenuFormFilter extends BaseMenuFormFilter { private $rootAlias; public function configure() { $this->widgetSchema['title'] = new sfWidgetFormFilterInput(array('with_empty' => false)); $this->validatorSchema['title'] = new sfValidatorPass(array('required' => false)); $this->widgetSchema['type'] = new sfWidgetFormChoice(array( 'choices' => Doctrine_Core::getTable('Menu')->getTypes(), 'expanded' => false, )); $this->validatorSchema['type'] = new sfValidatorChoice(array( 'choices' => array_keys(Doctrine_Core::getTable('Menu')->getTypes()), )); } public function addTitleColumnQuery(Doctrine_Query $q, $field, $values) { if (is_array($values) && isset($values['text']) && '' != $values['text']) { $this->JoinTable($q); $q->andWhere('t.title like ?', '%' . str_replace(" ","%",$values['text']) . '%'); } } public function addTypeColumnQuery(Doctrine_Query $q, $field, $values){ if (isset($values) && '%' != $values) { $this->JoinTable($q); $q->andWhere('t.type = ?', $values); } } private function JoinTable(Doctrine_Query $q){ if(empty($this->rootAlias)){ $request = sfContext::getInstance()->getRequest(); $this->rootAlias = $q->getRootAlias(); $q->leftJoin($this->rootAlias.'.Translation t') ->andWhere('t.lang = ?', $request->getParameter('sf_culture', 'ro')); // or it will search in all of them } } public function getFields(){ return parent::getFields() + array('type' => 'Text') + array('title' => 'Text'); } } "