0

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'
        ))

这现在显示错误,但选择是空的。如何添加此列表状态?我从文档中获取示例

也许是更好的方法?

4

1 回答 1

0

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

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

表单选项在第 5 个参数上设置。

于 2013-09-26T14:22:30.633 回答