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 に答える