SonataNewsBundle - 评论 - 为过滤器添加状态

时间:2013-09-26 10:59:08

标签: php symfony sonata-admin

SonataNewsBundle中的默认值CommentAdmin为:

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $datagridMapper
        ->add('name')
        ->add('email')
        ->add('message')
    ;
}

受保护的函数configureFormFields(FormMapper $ formMapper)中:

    protected function configureFormFields(FormMapper $formMapper)
    {
        if (!$this->isChild()) {
            $formMapper->add('post', 'sonata_type_model_list');
//            $formMapper->add('post', 'sonata_type_admin', array(), array('edit' => 'inline'));
        }

        $commentClass = $this->commentManager->getClass();

        $formMapper
            ->add('name')
            ->add('email')
            ->add('url', null, array('required' => false))
            ->add('message')
            ->add('status', 'choice', array('choices' => $commentClass::getStatusList(), 'expanded' => true, 'multiple' => false))
        ;
    }

我尝试添加到过滤器:

->add('status', null, array('label' => 'Status'), null, array('expanded' => true, 'multiple' => true))

但是抛出异常:

The options "expanded", "multiple" do not exist.

我也尝试过:              - > add('status','doctrine_orm_callback',array(

            'callback' => function($queryBuilder, $alias, $field, $value) {
                if (!$value) {
                    return;
                }

                $queryBuilder->andWhere($alias . '.status = :status');
                $queryBuilder->setParameter('status', $value);

                return true;
            },
            'field_type' => 'choice'
        ))

现在显示错误,但select为空。我如何添加此列表状态? 我从documentation

获得了示例

也许更好的方法呢?

1 个答案:

答案 0 :(得分:0)

通过调用add()方法给出了错误的参数顺序。 请尝试以下方法:

$filters->add('status', null, array(), 'choice', array('choices' => $commentClass::getStatusList(), 'expanded' => true, 'multiple' => false))

表格选项在第5个参数上设定。