Как исправить Symfony2 SonataAdminBundle неопределенный индекс _per_page?

Я только что обновил свой symfony2.1.6 до Symfony2.1.7 и столкнулся с этой проблемой. Пожалуйста, дайте мне знать, я могу предоставить более подробную информацию. Это было хорошо с 2.1.6, но, похоже, не работает в 2.1.7.

Эта ошибка возникает, когда я пытаюсь получить доступ к объекту Customer.php (список клиентов)

Notice: Undefined index: _per_page in /var/www/playground/vendor/sonata-project/admin-bundle/Sonata/AdminBundle/Admin/Admin.php line 720

2 ответа

Решение

Спасибо prodigitalson за комментарии, я решил проблему, как вы предложили, передав аргумент.

Теперь мой CustomerAdmin.php расширяет класс AbstractAdmin, который переопределяет администратора. Этот AbstractAdmin содержит общий код, а все другие классы администратора расширяют этот абстрактный класс.

<?php

namespace xxxx\AdminBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Doctrine\ORM\EntityManager;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Show\ShowMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Route\RouteCollection;

abstract class AbstractAdmin extends Admin
{
    /** @var int */
    protected $maxPerPage = 10;
    //other attributes

    public function __construct($code, $class, $baseControllerName)
    {
        parent::__construct($code, $class, $baseControllerName);
        $this->fields = $this->sortFields($fields);

        // custome arguments
        if (!$this->hasRequest()) {
            $this->datagridValues = array(
              ***'_per_page' => $this->maxPerPage*** //passing ***_per_page*** argument
        );
    }
}


<?php

namespace xxxx\AdminBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Route\RouteCollection;

class CustomerAdmin extends AbstractAdmin
{
   //code here
}

Значения datagridValues ​​инициализируются в $datagridValues ​​базового класса Sonata\AdminBundle\Admin\Admin. Причина, по которой я увидел эту проблему, заключалась в том, что люди обновляли $this->datagridValues ​​в своем коде, назначая полный массив. Мы исправили проблему, назначив отдельные значения в массиве, а не перезаписывая полный массив.

Другие вопросы по тегам