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 :

Création d'objets avec Embeded form


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 40
    Par défaut Création d'objets avec Embeded form
    Bonjour,
    je rencontre un problème qui ne trouve apparement aucune solution sur google (et en voyant l'heure à laquelle je poste, vous me croirais si je vous dit que cela fait des heures que je multiplie les recherches).

    Je dispose de deux objets, un objet parent Article ayant plusieurs objets enfants Images. (j'ai donc une relation one-to-many entre mon article et mes images)

    Je souhaite afficher sur le formulaire d'ajout d'article la possibilité d'ajouter "n" images (on va dire 1 pour commencer, mais peut importe).

    Donc, j'utilise pour cela la méthode embeded, qui m'affiche effectivement le formulaire d'ajout d'image au sein du formulaire d'ajout d'article.

    Problème, la validation du formulaire image ne fonctionne pas car la clé "article_id" n'est pas renseigné (l'article n'étant pas encore sauvegardé)

    Comment et ou récupérer l'ID de mon article (formulaire parent) pour le fournier à mes images (formulaires enfants) ?

    Voici le contenu de mon actions.php :

    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
     
      public function executeIndex(sfWebRequest $request)
      {
        	// Formulaire d'ajout d'un article
    	$this->form = new ArticleArticlesForm();
    	$form_image = new ArticleImagesForm();
    	$this->form->embedForm('image', $form_image);
     
        	// Validation
    	if ($request->isMethod('post')){
    		$this->form->bind($request->getParameter($this->form->getName()), $request->getFiles($this->form->getName()));
     
    		if ($this->form->isValid()){
    			$this->form->save();
    			$this->redirect('articles/index');
    		}
    	}
      }

    Si quelqu'un peut m'apporter son aide, je lui en serait grandement reconnaissant compte tenu du temps que j'ai passé en recherches infructueuse (les exemples trouvés sur google sont valides pour des EDITIONS d'objet parents et donc disposant déjà d'un ID ...)

    Merci.

  2. #2
    Membre éprouvé

    Homme Profil pro
    Software Engineer
    Inscrit en
    Août 2004
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2004
    Messages : 173
    Par défaut
    Bonjour,

    Il faut que dans ArticleImagesForm que tu unset['id_article'] dans la méthode configure().

    Si ca ne marche toujours pas, peux-tu poster ton template qui affiche ce formulaire ?

  3. #3
    Membre averti
    Inscrit en
    Août 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 40
    Par défaut
    Merci pour la réponse, mais cela n'a pas donné de résultat.
    J'ai upgradé vers la version 1.3 mon projet, mais c'est toujours sans succès.

    Je pense que je n'utilise pas les bons outils, pouvez vous me dire comment résoudre la problématique, basique, suivante avec Symfony 1.3 :

    Je gère des utilisateurs, chaque utilisateur peut avoir une ou plusieurs adresses et une adresse ne correspond qu'à un seul et unique utilisateur.

    Cela représente une relation one-to-many, jusque la tout est simple.

    Dans mon application, je souhaite pouvoir A LA CRÉATION d'un utilisateur, lui créer par la même occasion une adresse (il s'agit donc d'une double création)

    Comment faut il procéder ?

    J'avais pensé à utiliser les embedForm mais si tout va bien pour l'utilisateur, il me manque l'id utilisateur à fournir en tant que clé étrangère pour l'objet adresse ...

    J'ai tournée la question dans tout les sens, parcourus encore et encore google sans trouver de solution.

    Merci à celui qui saura me répondre, je suis pourtant sûr que cela doit être faisable, sinon il faut que le fasse l'enregistrement d'un utilisateur en deux fois, ce n'est pas du tout ergonomique.

  4. #4
    Membre chevronné Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324

  5. #5
    Membre averti
    Inscrit en
    Août 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 40
    Par défaut
    Merci sacricri, mais j'avais déjà parcouru ces pages.

    J'ai quand même essayer la méthode de la page 1, cela m'affiche les champs des deux models, mais lorsque je soumets le formulaire j'ai le message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Unexpected extra form field named
    Je trouve ça illogique qu'il me dise que les champs sont inattendus alors même qu'ils sont intégrés....

    J'ai pourtant fait comme décris sur la page 1 que tu m'as cité à savoir dans mon fichier utilisateurForm :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // On associe un formulaire d'ajout d'adresse
            $subForm = new sfForm();
            for($i = 0; $i < 1; $i++){
                    $adresse = new Adresses();
                    $adresse->Utilisateurs = $this->getObject();
     
                    $form = new AdressesForm($adresse);
     
                    $subForm->embedForm($i, $form);
            }
            $this->embedForm('adresses', $subForm);
    Pour mon template, pour le moment je fais un simple :
    Je passe à coté de quelque chose, mais quoi

Discussions similaires

  1. [Vxi3] Création d'objet avec Si.Alors.Sinon en Designer
    Par tpeluchon dans le forum Designer
    Réponses: 10
    Dernier message: 25/01/2010, 16h09
  2. Problème création d'un objet dans une Form
    Par helico2 dans le forum C++/CLI
    Réponses: 7
    Dernier message: 02/01/2008, 16h32
  3. création objet avec l ouverture d un fichier excel
    Par levac dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 30/07/2007, 15h51
  4. Création d'un objet d'un form a l'autre
    Par Argonz dans le forum C++Builder
    Réponses: 12
    Dernier message: 03/03/2004, 10h23

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