2017-08-18 57 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

相關問題