多选外键过滤器

发布于 2024-11-09 09:51:40 字数 1101 浏览 2 评论 0原文

我正在尝试在 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);
  }
}

任何帮助将不胜感激......

I'm trying to set up a multi-select filter on a foreign key in the symfony admin. I think I've set up everything correctly but for some reason it's not working:

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);
  }
}

Any help would be greatly appreciated...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尾戒 2024-11-16 09:51:40

在您的 validatorSchema 中,要验证发布的数据,您必须使用 array_keys($status_choices)
因为发布表单后发送的值是键而不是标签。

并且 addWhereIn 不是 Doctrine_Query 方法,请使用 andWhereIn 或 whereIn

希望对您有帮助

In your validatorSchema, to validate data posted, you have to use array_keys($status_choices)
because values sent after posting the form are keys and not labels.

And the addWhereIn is not a Doctrine_Query method, use andWhereIn or whereIn

Hope that will help you

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文