当我使用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%'
当我直接修改admin bundle中的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',
);
}
}
答案 0 :(得分:2)
在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',
);
}
答案 1 :(得分:1)
您已创建新的管理员,而不是覆盖现有的管理员。
确保扩展MediaBundle(不是AdminBundle),添加一个名为Application\Sonata\MediaBundle\Admin\MediaAdmin
的新类,并使用您已编写的构造函数。
您不需要为您的用例添加任何服务声明。