2017-08-18 33 views
0

我想使用prePersist()挂钩将获取的对象设置为准备好保留的对象。但我无法想象如何在Sonata Admin Bundle中使用教义。Symfony - Sonata抽象管理员和getDoctrine

这里是我的代码:

namespace ShareBundle\Admin; 

use Sonata\AdminBundle\Admin\AbstractAdmin; 
use Sonata\AdminBundle\Datagrid\ListMapper; 
use Sonata\AdminBundle\Datagrid\DatagridMapper; 
use Sonata\AdminBundle\Form\FormMapper; 



class UserShareAdmin extends AbstractAdmin 
{ 
    protected function configureFormFields(FormMapper $formMapper) 
    { 
     $formMapper->add('quantity', 'text') 
      ->add('user', 'sonata_type_model_list'); 
    } 

    protected function configureDatagridFilters(DatagridMapper $datagridMapper) 
    { 
     $datagridMapper->add('quantity'); 
    } 

    protected function configureListFields(ListMapper $listMapper) 
    { 
     $listMapper->addIdentifier('quantity')->addIdentifier('user')->addIdentifier('date'); 
    } 

    public function prePersist($object) 
    { 
     $shareManager = $this->getDoctrine()->getManager()->getRepository('ShareBundle:Share'); 
     $value = $shareManager->findOneBy(array(), array('date' => 'DESC')); 
     $object->setShare($value); 
    } 
} 

没有人有任何想法怎么办呢?

谢谢!

+0

你是什么意思? –

回答

0

好吧,我已经弄明白了!

我在我的服务参数

#app/config/services.yml 

arguments: [~, ShareBundle\Entity\UserShare, ~, @doctrine.orm.default_entity_manager] 

指定ORM默认的实体管理器,我必须在我的管理类扩展的构造函数。

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

(感谢this answer

相关问题