如何修复Symfony2 SonataAdminBundle undefined index _per_page?

时间:2013-02-19 21:49:23

标签: php doctrine-orm symfony-2.1 sonata-admin

我刚刚将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 个答案:

答案 0 :(得分:2)

datagridValues在基本Sonata \ AdminBundle \ Admin \ Admin类的$ datagridValues上初始化。我看到这个问题的原因是人们通过分配一个完整的数组在他们的代码中更新$ this-> datagridValues。我们通过在数组中分配单个值而不是覆盖整个数组来修复该问题。

答案 1 :(得分:1)

感谢prodigitalson发表评论,我通过传递论证解决了问题。

现在我的CustomerAdmin.php扩展了覆盖Admin的AbstractAdmin类 此AbstractAdmin包含公共代码,所有其他Admin类扩展此Abstract类。

<?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
}