问题
I want some changes in ModelMangaer then I was extending ModelManager but It's not working. I don't know why ?
Any one tell me why it is not working?
File where I extend 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);
}
回答1:
You have a very big problem here:
class ModelManager extends ModelManager
You try to extend class from self. It's wrong! You need to declare your base class with Fully Qualified Name or use use
statement. Also you forgot to put namespace declaration. Something like this will work:
namespace Acme\Bundle\DemoBundle\Model;
use Sonata\DoctrineORMAdminBundle\Model\ModelManager as BaseClass;
class ModelManager extends BaseClass
回答2:
You forgot the namespace
namespace Acme\MyDoctrineORMAdminBundle\Model\ModelManager;
You need to use bundle inheritance.
// src/Acme/MyDoctrineORMAdminBundle/MyDoctrineORMAdminBundle.php
namespace Acme\MyDoctrineORMAdminBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class MyDoctrineORMAdminBundle extends Bundle
{
public function getParent()
{
return 'DoctrineORMAdminBundle';
}
}
回答3:
You have to modify the service that is going to be injected, see:
Admin's documentation - Reference - Advanced (master) - 26.1. Service Configuration
# 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
For an individual Model Manager on an Admin Class please see this answer: SonataDoctrineORM - Model extends
来源:https://stackoverflow.com/questions/14516128/how-to-extends-sonata-doctrineormadminbundle-model-modelmanager