2017-08-18 2 views
0

Je souhaite utiliser le hook prePersist() pour définir un objet récupéré dans un objet prêt à être persistant. Mais je n'arrive pas à comprendre comment utiliser la doctrine avec Sonata Admin Bundle.Symfony - Sonata Résumé Admin et getDoctrine

Voici mon code:

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); 
    } 
} 

Est-ce que quelqu'un a une idée comment le faire?

Merci!

+0

Que voulez-vous dire? –

Répondre

0

Bon les gars, donc je l'ai compris!

je devais préciser le gestionnaire d'entités par défaut ORM dans mon argument Service

#app/config/services.yml 

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

Et je devais étendre la fonction de construction de dans ma classe Admin.

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

(Merci à this answer)