SONATA MY ADMIN : TypeError: trim() expects

我目前在一个网站上工作,我必须在后台使用 Sonata Admin。我正在将项目从 symfony 3 升级到 symfony 4,当我尝试过滤实例化实体时遇到问题。


我以这种方式配置了一个过滤器:



    protected function configureDatagridFilters(DatagridMapper $datagridMapper)

    {

        $datagridMapper->add('name',null , [], EntityType::class, array(

            'class' => Universe::class,

            'choice_label' => 'name',

        ));

    }

它在下拉列表中很好地引用了现有的 Universe 实体(按照我的要求显示它们的名称)。你自己看 :


下拉过滤器


但是当我尝试使用该列表中的名称进行实际过滤时,我得到了这个错误:


TypeError: trim() expects parameter 1 to be string, object given


我查看了互联网,根据我在文档中找到的内容,我完全按照他们的方式配置了过滤器(来源:https ://symfony.com/doc/current/bundles/SonataAdminBundle/getting_started/the_list_view.html#filtering-by-类别)。


你知道我做错了什么吗?我不知道除了找到错误之外还能提供什么...


多谢 !


Qyouu
浏览 122回答 1
1回答

largeQ

如果我理解问题正确,您想根据同一实体的字段过滤实体?namespace App\Admin;use App\Entity\Category;use Sonata\AdminBundle\Datagrid\DatagridMapper;use Symfony\Bridge\Doctrine\Form\Type\EntityType;final class UniverseAdmin extends AbstractAdmin{    protected function configureDatagridFilters(DatagridMapper $datagridMapper)    {        $datagridMapper            ->add('title')            ->add('name',null , [], EntityType::class, [                'class' => Universe::class,                'choice_label' => 'name',            ])        ;    }}恐怕这行不通。您应该创建一个包含“名称”字段的实体,并在名称实体和适当的实体之间创建关系。
打开App,查看更多内容
随时随地看视频慕课网APP