我目前在一个网站上工作,我必须在后台使用 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-类别)。你知道我做错了什么吗?我不知道除了找到错误之外还能提供什么...多谢 !
1 回答
largeQ
TA贡献2039条经验 获得超7个赞
如果我理解问题正确,您想根据同一实体的字段过滤实体?
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',
])
;
}
}
恐怕这行不通。您应该创建一个包含“名称”字段的实体,并在名称实体和适当的实体之间创建关系。
- 1 回答
- 0 关注
- 121 浏览
添加回答
举报
0/150
提交
取消