Sonata Admin中的默认排序 - Mediabundle

时间:2017-05-02 11:53:19

标签: 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%'

当我直接修改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',
        );
    }
}

2 个答案:

答案 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的新类,并使用您已编写的构造函数。

您不需要为您的用例添加任何服务声明。

相关问题