Php Sonata管理员列表视图,创建更多标题排序按钮?
我有一个Admin类,它具有listFields的以下定义:Php Sonata管理员列表视图,创建更多标题排序按钮?,php,sorting,symfony,sonata-admin,symfony-sonata,Php,Sorting,Symfony,Sonata Admin,Symfony Sonata,我有一个Admin类,它具有listFields的以下定义: protected function configureListFields(ListMapper $listMapper) { $listMapper ->addIdentifier('type') ->add('created_at', 'datetime') ->add('updated_at', 'datetime')
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('type')
->add('created_at', 'datetime')
->add('updated_at', 'datetime')
->add('created_by')
->add('updated_by')
->add('is_active')
->add('is_deleted')
->add('_action', 'actions',
array(
'actions' => array(
'view' => array(),
'edit' => array(),
'delete' => array()
)
))
;
}
只有“type”列是可排序的-即,当您将鼠标悬停在“type”的表格标题上时,您会看到一个asc/desc箭头,并且可以单击以根据此列重新排序行
我怎样才能让它出现在更多的专栏中
我尝试添加sortable=true,但它试图连接到另一个实体 您必须在字段中添加可排序的
选项
以下是我使用的代码:
protected function configureListFields(ListMapper $listMapper) {
$listMapper
->addIdentifier('name')
->add('application', null, array('sortable' => true))
->add('isActive', null, array('editable' => true))
->add('_action', 'actions', array(
'actions' => array(
'view' => array(),
'edit' => array(),
'delete' => array(),
)
))
;
}
希望这有助于如果Sonata知道字段的类型,它将能够对字段进行排序;如果列出一个相关实体,则无法进行排序
以下是实体“事件”中的configureListFields(),该实体有一个标题,并链接到另一个实体“城市”
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('title')
->add('city')
}
将创建到城市的链接,但该链接不可排序,而是从“城市”添加特定字段将起作用:
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('title')
->add('city.name')
}
现在可以排序了
# we can sort the related entity properties like. This following condition site is an entity
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('name')
->add('site',null,array(
'sortable'=>true,
'sort_field_mapping'=> array('fieldName'=>'name'),
'sort_parent_association_mappings' => array(array('fieldName'=>'site')
)))
;
}
这是在列表配置中对相关实体进行排序的方法。
只需检查一下这个就可以了:我已经读过了,它只是关于设置默认排序字段。我想对更多的列进行排序。(不是同时,我只是想选择对其他列进行排序,而不是第一列)@Jessica你能解决这个问题吗。。??如果是,请在这里分享。我面临着同样的问题。不,我还没有。我只是在处理了其他东西之后才回到它,再次搜索错误,找到了我自己的线程:-P我不能建议在实体中使用特定字段,因为我依赖于实体u toString函数来打印它。我必须决定:A.使用特定字段B.不对字段进行排序C.扩展Sonata并允许它按照_-toString值对实体进行排序(这意味着排序是在PHP中,而不是在MySQL中,显然要慢得多)“我尝试添加sortable=true,但它试图连接到另一个实体。”这正是我使用代码可捕获的致命错误得到的错误:传递给Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery::entityJoin()的参数1必须是数组类型,给定null,在第140行的/vagrant/vendor/sonata project/DoctrineORMAdminBundle/sonata/DoctrineORMAdminBundle/Datagrid/ProxyQuery.php中调用,并在/vagrant/vendor/sonata project/DoctrineORMAdminBundle/sonatagrid/ProxyQuery.php行中定义,链接到管理员的实体不包含我列出的字段。我列出的字段来自子实体。Sonata尝试查找关于如何处理字段的元数据,但找不到任何元数据,因为它来自子类,因此它尝试查找关系。