Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Sonata管理员列表视图,创建更多标题排序按钮?_Php_Sorting_Symfony_Sonata Admin_Symfony Sonata - Fatal编程技术网

Php Sonata管理员列表视图,创建更多标题排序按钮?

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')

我有一个Admin类,它具有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()
                )
            ))
    ;

}
只有“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尝试查找关于如何处理字段的元数据,但找不到任何元数据,因为它来自子类,因此它尝试查找关系。