SonataDoctrineORM - 模型扩展 [英] SonataDoctrineORM - Model extends
问题描述
我只想删除DoctrineOrmBundle- ModelManager.php的一些默认方法
我试图通过将
<?php
命名空间Project\来覆盖ModelManager AdminBundle\Model;
使用Sonata\DoctrineORMAdminBundle\Model\ModelManager作为ModelManager;
class ModelManager扩展ModelManager
{
/ **
* {@inheritdoc}
* /
public function getSortParameters (FieldDescriptionInterface $ fieldDescription,DatagridInterface $ datagrid)
{
$ values = $ datagrid-> getValues();
$ values = $ _GET ['filter'];
if($ fieldDescription-> getName()== $ values ['_ sort_by']){
// echo $ fieldDescription-> getName()。 '---'。 $ values ['_ sort_order']。 '< br />';
if($ values ['_ sort_order'] =='ASC'){
$ values ['_ sort_order'] ='DESC';
} else {
$ values ['_ sort_order'] ='ASC';
}
} else {
$ values ['_ sort_order'] ='ASC';
$ values ['_ sort_by'] = $ fieldDescription-> getName();
}
返回数组('filter'=> $ values);
}
}
?>
并告诉Sonata DoctrineOrm默认使用它。
但我不知道该怎么做。
我至少在正确的轨道上?
您仍然需要告诉管理员使用您的自定义ModelManager。为此,您必须在定义管理服务时应用setModelManager方法。
Services.yml:
服务:
#new模特经理
myproject.model_manager:
类:Project\AdminBundle\Model\ModelManager
参数:
- '@doctrine'
#define admin service
myproject_admin.project :
class:MyProject\MyBundle\Admin\ProjectAdmin
标签:
- {name:sonata.admin,manager_type:orm,group:Projects,label:Projects}
参数:
- null
- MyProject\MyBundle\Entity\Project
- SonataAdminBundle:CRUD
调用:
- [setModelManager,['@myproject .model_manager']]
阅读更多文档的以下部分: http://sonata-project.org/bundles/admin/2-2/doc/参考, nce / advanced.html
I'm using Sonata with SonataAdmin & SonataOrm as told in several tutorials.
I simply would like to remove some default method of DoctrineOrmBundle- ModelManager.php
I tried to override the ModelManager by putting
<?php
namespace Project\AdminBundle\Model;
use Sonata\DoctrineORMAdminBundle\Model\ModelManager as 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']) {
//echo $fieldDescription->getName() . ' --- ' . $values['_sort_order'] . '<br />';
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);
}
}
?>
And tell Sonata DoctrineOrm to use it by default.
But I don't know how to do it.
Am I at least on the right track ?
You still need to tell the adminbundle to use your custom ModelManager. To do so you have to apply the setModelManager method when defining your admin services. Services.yml:
services:
#new model manager
myproject.model_manager:
class: Project\AdminBundle\Model\ModelManager
arguments:
- '@doctrine'
#define admin service
myproject_admin.project:
class: MyProject\MyBundle\Admin\ProjectAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: Projects, label: Projects }
arguments:
- null
- MyProject\MyBundle\Entity\Project
- SonataAdminBundle:CRUD
calls:
- [setModelManager, ['@myproject.model_manager'] ]
Read more in following section of the documentation: http://sonata-project.org/bundles/admin/2-2/doc/reference/advanced.html
这篇关于SonataDoctrineORM - 模型扩展的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!