6

我有一个管理类,它有这个 listFields 的定义:

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()
                )
            ))
    ;

}

只有“类型”列是可排序的 - IE,当您将鼠标悬停在“类型”的表头上时,您会看到一个 asc/desc 箭头,并且可以单击以根据此列对行重新排序。

如何让它显示在更多列上?

我尝试添加 sortable=true 但随后它试图加入另一个实体。

4

3 回答 3

12
# 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')
            )))
    ;
}

这是在列表配置中对相关实体进行排序的方法。只需按实体字段检查此排序列表

于 2014-06-17T03:42:15.073 回答
4

如果 Sonata 知道它是什么类型,它将能够对字段进行排序;如果您列出相关实体,则无法排序。

这是来自实体“Event”的configureListFields() ,该实体具有标题并链接到另一个实体“City”

protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
            ->addIdentifier('title')
            ->add('city')
}

将创建一个指向城市的链接,但它不能排序,而是从“城市”添加一个特定字段将起作用:

protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->addIdentifier('title')
        ->add('city.name')
}

现在可以排序了。

于 2013-09-06T14:47:10.037 回答
0

您必须在字段上添加sortable选项。

这是我使用的代码:

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(),
            )
        ))
    ;
}

希望这可以帮助

于 2013-07-25T08:05:14.380 回答