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

 PHP Discussion :

Problème avec embedRelation


Sujet :

PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 155
    Par défaut Problème avec embedRelation
    Bonjour,

    S'autoformer à Symfony n'est pas de tout repos ! On solutionne un problème pour en découvrir un autre !

    Pour m'autoformer, je me fais une petite app de gestion des factures. Pour les factures j'ai deux modèles : un modèle Facture et un modèle Entree (une facture peut avoir plusieurs entrées, avec désignation et montant HT par exemple).

    Dans le configure() de FactureForm.class.php, j'ajoute une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->embedRelation("Entrees");
    où "Entrees" est l'alias donnés dans schema.yml.

    Ensuite quand je vais pour afficher le formulaire de création d'une nouvelle facture, j'ai bien l'entête "Entrées" dans une balise <th> mais je n'ai pas le formulaire correspondant en vis-à-vis.
    Pourtant si j'essaie d'afficher directement un formulaire d'entrée via .../frontend_dev.php/entree, j'ai bien ce formulaire...

    Je ne comprends pas trop en fait pourquoi ça ne marche pas; j'ai suivi un tuto à la lettre, ça fait deux heures que je cherche une solution mais ne trouve pas.

    Merci d'avance à celles et ceux qui me liront ainsi qu'à celles et à ceux qui sauront éclaircir mon esprit !

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 155
    Par défaut
    En fait, je me suis un peu trompé, la cellule <td> n'est pas totalement vide. Elle contient ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <table>
      </table><input type="hidden" name="facture[id]" id="facture_id" />
     
    <input type="hidden" name="facture[_csrf_token]" value="c7a33952c582467512ff16b5048cf93c" id="facture__csrf_token" />
    Pourquoi la balise <table /> est-elle vide ? Ne devrait-elle pas contenir mes deux champs désignation et montant HT ?

  3. #3
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Non. Dans ton cas, embedRelations() permet d'afficher les formulaires pour les objets qui existent déjà. Si tu as une facture avec deux entrées, quand tu éditeras cette facture, tu verras bien apparaitre deux formulaires (un par entrée).

    Quand tu es en création de facture, aucune entrée n'existe donc la liste des formulaires associés est vide. Si tu veux pouvoir ajouter une entrée en même temps que tu crées une facture, il faut que tu enchâsses à la main, dans FactureForm.configure() un formulaire EntreeFactureForm et que tu effectues quelques retouches pour que ça marche.

    Exemple dans : the More with Symfony / Advanced Forms

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 155
    Par défaut
    @ Herode : encore merci !

    Je le soupçonnais ! Donc je viens d'insérer un jeu de données test et ça m'a donc l'air bon pour la partie modification. Ca fait quand même plaisir !

    Et je vais donc me pencher sur le cas de la création a la mano...

    @ Herode : je suis certain que l'on va se revoir

  5. #5
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    S'autoformer à Symfony n'est pas de tout repos ! On solutionne un problème pour en découvrir un autre !
    Il n'y a pas de problèmes avec Symfony, que des réponses, qui, parfois, attendent d'être découvertes.

    As-tu fais le tutoriel Jobeet qui est, à mon avis, indispensable avant de commencer tout développement, même pour tester. Il permet de bien découvrir les fonctionnalités de bases du framework et les bonnes méthodes a utiliser.

    L'avantage de symfony c'est de partager les questions, et les réponses. Avec symfony, on appel cela des plugins. Je pense que le plugins : ahDoctrineEasyEmbeddedRelationsPlugin pourrait bien être celui qui te viendras en aide. Et va te révéler la grandeur de symfony.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 155
    Par défaut
    Super ce plugin, ça fait ce que je voulais développer...

    Juste une question sur le paramètre obligatoire 'considerNewFormEmptyFields' : j'ai compris dans la doc qu'il s'agissait d'y indiquer les champs qui empêchent de créer un nouvel objet s'ils sont vides. J'ai fait le test avec mes deux champs 'designation' et 'montant_ht', mais le formulaire principal ainsi que les imbriqués "vides" ont été sauvés. Quand je réédite ma facture, j'ai bien l'entrée vide qui est venue s'ajouter... Alors je n'ai pas dû bien comprendre le paramètre peut-être.

    Autre question, qui concerne sans doute plus une façon de faire qu'un point technique particulier :
    une facture peut avoir plusieurs entrées. Mais à la création ou à l'édition, on ne sait pas réellement combien il va y en avoir. Quelle serait la meilleure démarche, selon vous, pour pouvoir ajouter des nouvelles entrées ? J'ai vu qu'il y a avait un paramètre 'newRelationButtonLabel' et un paramètre 'newRelationUseJSFramework'. Est-ce là un bon point de départ ? Le but étant de faire en sorte, autant que possible, de ne pas recharger toute la page à la création d'une nouvelle entrée.

    Merci d'avance

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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