2017-08-18 7 views
0

私はprePersist()フックを使ってフェッチされたオブジェクトを永続化可能なオブジェクトに設定します。しかし、私はSonata Admin Bundleで教義を使う方法を理解できません。ここでsymfony - Sonata Abstract Adminと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のおかげで)

関連する問題