Sonata Admin - Mediabundle 中的默认排序
Default sort in Sonata Admin - Mediabundle
当我使用 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',
);
}
}
您创建了一个新的管理员,而不是覆盖现有的管理员。
确保扩展 MediaBundle(不是 AdminBundle),添加一个新的 class 调用:Application\Sonata\MediaBundle\Admin\MediaAdmin
并使用您已经编写的构造函数。
您不需要为您的用例添加任何服务声明。
在 services.yml 中,我需要添加以下行:
parameters:
sonata.media.admin.media.class: Application\Sonata\MediaBundle\Admin\MediaAdmin
我也扩展错了class,我需要扩展的是Sonata\MediaBundle\Admin\PHPCR\MediaAdmin class而不是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 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',
);
}
}
您创建了一个新的管理员,而不是覆盖现有的管理员。
确保扩展 MediaBundle(不是 AdminBundle),添加一个新的 class 调用:Application\Sonata\MediaBundle\Admin\MediaAdmin
并使用您已经编写的构造函数。
您不需要为您的用例添加任何服务声明。
在 services.yml 中,我需要添加以下行:
parameters:
sonata.media.admin.media.class: Application\Sonata\MediaBundle\Admin\MediaAdmin
我也扩展错了class,我需要扩展的是Sonata\MediaBundle\Admin\PHPCR\MediaAdmin class而不是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',
);
}