IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

setter sur une Doctrine_collection: many to many


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Par défaut setter sur une Doctrine_collection: many to many
    Bonjour,

    j'ai un formulaire qui me permet de créer un nouvel article. Pour certains champs, je fais un set($value), mais après la soumission du formulaire, mes valeurs qui ont été rajoutées avec le set ne sont pas enregistrées en BD.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    //_form (Article)
     
    <?php  $form->getObject()->setType('maValeur') ?> 
    <?php  $form->getObject()->setCategorie('autreValeur') ?>
    Est-ce que je dois rajouter qqc au niveau du Controller (de la méthode processForm)..?

    J'espère pouvoir avoir quelques réponses quant à mon problème.

    Merci!!

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 63
    Par défaut
    oui, il faut modifier ton processForm

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //_form (Article)
     $article = $form->save();
       $form->getObject()->setType('maValeur')  
       $form->getObject()->setCategorie('autreValeur')  
    $article>save();

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Par défaut
    Merci pour ta réponse.
    j'ai intégré le code dans le controller au niveau de la méthode processForm comme tu l'as indiqué, tout en laissant les setter au niveau du _form aussi, mais la sauvegarde ne marche toujours pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    protected function processForm(sfWebRequest $request, sfForm $form)
      {	
        $form->bind($request->getParameter($form->getName()),      $request->getFiles($form->getName()));
     
     
        if ($form->isValid())
        {
     
      	 $article = $form->save();	
      	 $inst = $form->getObject()->getInstitutionId();
             $form->getObject()->setInstitutionId($inst) ;
             //var_dump($inst);exit();
     
         $article->save();
     
         $this->redirect('.........');
     
      	}
    quand je fais un var_dump de la valeur $inst, ça m'affiche bien la bonne valeur, mais celle-ci n'est pas sauvegardée après, je comprends pas

  4. #4
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Par défaut setter sur une Doctrine_collection: many to many
    ça marche maintenant, il a fallu que je surcharge les setter dans ma classe.

    Maintenant je me heurte à un autre problème:

    Comment faire un set sur une Doctrine_collection en cas d'une relation many to many?

    quand je regarde mon BaseArticle: j'ai bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    * @property Doctrine_Collection $Auteurs
    * @method Article             setAuteurs()         Sets the current record's "Auteurs" collection
    quand je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $form->getObject()->setAuteurs($auteurs)
    ça ne marche pas.

    en lisant la doc Dctrine, j'ai trouvé qu'on peut utiliser un add() sur les colelctions, alors j'ai testé ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $auteurs = ...;
    $auteursCollection = new Doctrine_Collection('Auteur');
    foreach ($auteurs as $auteur)
    	{
    	$auteursCollection->add($auteur);
     
    }
     
    $auteursCollection->save();
    ça ne fonctionne toujours pas

    Avez vous une idée?

Discussions similaires

  1. [Débutant] UPDATE d'une assocation N-N (many to many)
    Par Binenebi dans le forum Entity Framework
    Réponses: 2
    Dernier message: 01/05/2013, 15h22
  2. [2012] Intersection sur une même hiérarchie en many to many
    Par Jester dans le forum SSAS
    Réponses: 5
    Dernier message: 30/04/2013, 18h05
  3. [2.x] Setter sur une primary key de type string
    Par snipemi dans le forum Symfony
    Réponses: 3
    Dernier message: 29/08/2011, 17h40
  4. Un peu de mal a comprendre le concepte "one-to-many" et "many-to-many"
    Par chriscoolletoubibe dans le forum Hibernate
    Réponses: 4
    Dernier message: 29/03/2007, 18h50
  5. Réponses: 1
    Dernier message: 03/12/2006, 20h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo