sonata-admin - Sonata Admin 中的默认排序 - Mediabundle

标签 sonata-admin sonata sonata-media-bundle

当我使用 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/

相关文章:

Symfony2、奏鸣曲、用户包 : Send email when user is enable on update

symfony - 奏鸣曲sonata_type_collection显示表

php - Symfony CMF Media Bundle 使图像无效;前端不重新加载缓存图像

php - 安装 SonataMediaBundle 后映射异常

javascript - SonataMediaBundle : a way to remove unlink thickbox

symfony - 如何过滤用户可以在 Sonata Admin 中看到的实体实例

symfony - 在 Sonata 管理列表中使用自定义列

symfony - 如何使用 admin-bundle 处理 Symfony 4 中的 perPageOptions 弃用?

symfony - 没有与上下文相关的主要类别 : default

symfony - 针对自定义表单类型使用 sonata_type_collection 而不是与另一个实体的属性/关系