Фильтр множественного выбора внешнего ключа - PullRequest
0 голосов
/ 23 мая 2011

Я пытаюсь настроить фильтр множественного выбора для внешнего ключа в администраторе Symfony. Я думаю, что все настроил правильно, но по какой-то причине это не работает:

public function configure()
{
    parent::configure();

    $s = Doctrine_Query::create()->
      from('Status s')->
      execute();

    $status_choices = array();
    foreach ($s as $key => $value) {
        $status_choices[$value->getId()] = $value->getName();
    }

    $this->widgetSchema['status_id'] = new sfWidgetFormChoice(array('choices' => $status_choices, 'multiple' => true, 'expanded' => true));

    $this->validatorSchema['status_id'] = new sfValidatorChoice(array('required' => false, 'choices' => $status_choices, 'multiple' => true));



}

public function getFields()
{

    $fields = parent::getFields();
    $fields['status_id'] = 'StatusId';
    return $fields;

}

public function addStatusIdQuery(Doctrine_Query $query, $field, $values)
{
    $fieldName = $this->getFieldName($field);

  if (!empty($values))
  {
        $query->addWhereIn(sprintf('%s.%s', $query->getRootAlias(), $fieldName), $values);
  }
}

Любая помощь будет принята с благодарностью ...

1 Ответ

2 голосов
/ 30 сентября 2011

В вашей validatorSchema, чтобы проверить отправленные данные, вы должны использовать array_keys ($ status_choices) потому что значения, отправленные после публикации формы, являются ключами, а не метками.

И addWhereIn не является методом Doctrine_Query, используйте andWhereIn или whereIn

Надеюсь, что это поможет вам

...