当我使用 Sonata Mediabundle 时,上传的最新图像出现在第 80 个页面上,因此我认为创建一个新的扩展包会更容易,它使用更新时间更改排序顺序:
<?php
namespace Application\Sonata\AdminBundle\Admin;
use Sonata\AdminBundle\Admin\Admin as SonataAdmin;
/**
* Class ClientAdmin
*
* @package AppBundle\Admin
*/
class ClientAdmin extends SonataAdmin
{
/**
* @param string $code
* @param string $class
* @param string $baseControllerName
*/
public function __construct($code, $class, $baseControllerName)
{
parent::__construct($code, $class, $baseControllerName);
$this->datagridValues = array(
'_page' => 1,
'_sort_order' => 'DESC',
'_sort_by' => 'updatedAt',
);
}
}
该服务如下所示:
services:
application_sonata_admin.admin.client_admin:
class: Application\Sonata\AdminBundle\Admin\ClientAdmin
tags:
- { name: sonata.admin, manager_type: orm, label: "Clients"}
arguments:
- ~
- '%sonata.classification.admin.collection.entity%'
- '%sonata.classification.admin.collection.controller%'
当我直接修改管理包中的 datagridvalues 时,排序效果很好(DESC by UpdatedAt),我在扩展方面做错了什么? 我关注了this instruction .
更新:作为下面有用的评论,我删除了主管理的扩展,并尝试扩展 BaseMedia,但顺序仍然错误。
<?php
namespace Application\Sonata\MediaBundle\Admin;
use Sonata\MediaBundle\Admin\BaseMediaAdmin;
/**
* Class MediaAdmin
*
* @package AppBundle\Admin
*/
class MediaAdmin extends BaseMediaAdmin
{
/**
* @param string $code
* @param string $class
* @param string $baseControllerName
*/
public function __construct($code, $class, $baseControllerName, $pool)
{
parent::__construct($code, $class, $baseControllerName, $pool);
$this->datagridValues = array(
'_page' => 1,
'_sort_order' => 'DESC',
'_sort_by' => 'createdAt',
);
}
}
最佳答案
在 services.yml 中,我需要添加以下行:
parameters:
sonata.media.admin.media.class: Application\Sonata\MediaBundle\Admin\MediaAdmin
此外,我扩展了错误的类,我需要扩展的是 Sonata\MediaBundle\Admin\PHPCR\MediaAdmin 类,而不是 Sonata\MediaBundle\Admin\BaseMediaAdmin 类。
<?php
namespace Application\Sonata\MediaBundle\Admin;
use Sonata\MediaBundle\Admin\PHPCR\MediaAdmin as BaseMediaAdmin;
/**
* Class MediaAdmin
*
* @package Application\Sonata\MediaBundle\Admin
*/
class MediaAdmin extends BaseMediaAdmin
{
protected $datagridValues = array(
'_page' => 1,
'_per_page' => 25,
'_sort_order' => 'DESC',
'_sort_by' => 'createdAt',
);
}
关于sonata-admin - Sonata Admin 中的默认排序 - Mediabundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43737195/