3

我想要在 ModelMangaer 中进行一些更改,然后我正在扩展 ModelManager 但它不起作用。我不知道为什么?

有人告诉我为什么它不起作用?

我在其中扩展 Sonata\DoctrineORMAdminBundle\Model\ModelManager-> 的文件

<?php

use Sonata\DoctrineORMAdminBundle\Model\ModelManager;


class ModelManager extends ModelManager
{

/**
 * {@inheritdoc}
 */
public function getSortParameters(FieldDescriptionInterface $fieldDescription,            DatagridInterface $datagrid)
{
    $values = $datagrid->getValues();
    $values = $_GET['filter'];

    if ($fieldDescription->getName() == $values['_sort_by']) {

        if ($values['_sort_order'] == 'ASC') {
            $values['_sort_order'] = 'DESC';
        } else {
            $values['_sort_order'] = 'ASC';
        }
    } else {
        $values['_sort_order'] = 'ASC';
        $values['_sort_by']    = $fieldDescription->getName();
    }
    return array('filter' => $values);
}
4

3 回答 3

1

你这里有一个很大的问题:

class ModelManager extends ModelManager

你试图从自我扩展类。这是错的!您需要使用完全限定名称或 useuse语句声明您的基类。你也忘了把命名空间声明。像这样的东西会起作用:

namespace Acme\Bundle\DemoBundle\Model;

use Sonata\DoctrineORMAdminBundle\Model\ModelManager as BaseClass;

class ModelManager extends BaseClass
于 2014-09-08T12:22:35.057 回答
0

你忘记了命名空间

namespace Acme\MyDoctrineORMAdminBundle\Model\ModelManager;

您需要使用捆绑继承

// src/Acme/MyDoctrineORMAdminBundle/MyDoctrineORMAdminBundle.php

namespace Acme\MyDoctrineORMAdminBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class MyDoctrineORMAdminBundle extends Bundle
{
    public function getParent()
    {
        return 'DoctrineORMAdminBundle';
    }
}
于 2013-01-25T09:29:56.587 回答
0

您必须修改将要注入的服务,请参阅:

管理员文档 - 参考 - 高级(主) - 26.1。服务配置

# app/config/config.yml
admins:
sonata_admin:
    sonata.order.admin.order:   # id of the admin service this setting is for
        model_manager:          # dependency name, from the table above
            sonata.order.admin.order.manager  # customised service id

对于管理类上的单个模型管理器,请参阅此答案: SonataDoctrineORM - 模型扩展

于 2014-08-28T11:56:17.533 回答