[Symfony2][ODM] Condition de récupération de variable

Petit nouveau ! | 5 Messages

03 juin 2013, 14:12

Bonjour,

Voila je suis débutant dans Symfony2, en développant mon application je me heurte à un petit problème:

Je possède un champ de texte dans lequel je récupére une caractéristique ($nom) d'une entité Formulaire et j'aimerais emettre une condition telle que si un formulaire portant déjà ce nom existe alors l'application le récupère mais si il n'existe pas, alors l'application crée un nouveau Formulaire.

Voici le code de mon controlleur :
public function creerAction()     
{         
$formulaire = new Formulaire();         
$form = $this->get('form.factory')->create(new FormulaireForm(),$formulaire);                   
$request = $this->container->get('request');                             
if ($request->getMethod() == 'POST')          
{            
$form->bindRequest($request);                           
if ($form->isValid())              
{                 
$em = $this->container->get('doctrine_mongodb')->getManager();                                   
//Recuperation du nom du formulaire                 
$donnee = $form->getData();                 
$nom=$donnee->getNom();                                   
//Verification si le formulaire existe                  
if(isset($nom))                 
{                     
$f = $em->find('CpamProjetBundle:Formulaire',$nom);                     
//Si la recuperation n aboutie pas, alors creation du Formulaire                     
if (!$f)                     
{                         
$em->persist($formulaire);                         
$em->flush();                     
}                 
}                 
return new RedirectResponse($this->generateUrl('cpamprojet_definir'));             
}         
}         
return $this->render('CpamProjetBundle:Projet:creer.html.twig',array('form' => $form->createView()));     } 
Sous cette forme, les formulaires se créent mais ne tiennent pas compte de la condition sencé restreindre la création de Formulaire si un Formulaire portant déjà le même $nom existe !

Eléphant du PHP | 209 Messages

28 juin 2013, 15:24

Je ne me rappelle plus trop comment cela fonctionne avec mongo (ça date un peu trop -_-) mais ton find ne devrai-il pas prendre en paramètre un tableau associatif ?
array('<nom_de_ta_colonne>' => $nom) ?

Mammouth du PHP | 568 Messages

02 juil. 2013, 09:33

Ce que tu cherche à faire est expliqué en détail dans la documentation officiel, via le DataTransformer, qui te permet de récupérer une entité à partir d'un champ, et de la créer si celle-ci n’existe pas.

Un peu de lecture http://symfony.com/fr/doc/current/cookb ... rmers.html