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 :

formulaire imbriqué


Sujet :

PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2011
    Messages
    444
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2011
    Messages : 444
    Points : 108
    Points
    108
    Par défaut formulaire imbriqué
    bonjour,
    j'etulise un formulaire qui imbrique 2 module Kk et Client tous se passe bien pour l'affichage et sauvgarde mais pour la modification j'ai mis une fonction qui me retourne tous les donné des 2 table mais il y'a un probléme The "ClientForm" form only accepts a "Client" object.
    voici ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     function modifier(){
            $liste_news = Doctrine_Query::create()
    		->from('Client')
    		->leftJoin('Client.Kk')
                    ->where('hh=2')
                    ->andWhere('Client.id = ?', 2);
     
           return $liste_news->execute();
        }
    et voici l'apple depuis actions.class.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     public function executeEdit(sfWebRequest $request)
      {
          $c=Doctrine::getTable('Client')->modifier();
          $this->form = new ClientForm($c);
      }
    et mon schéma :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    Client:
      connection: doctrine
      tableName: client
      columns:
        id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
        nom:
          type: string()
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
        prenom:
          type: string()
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
       relations:
       Kk:
          local: id
          foreign: id
          type: many
        Kk:
      connection: doctrine
      tableName: kk
      columns:
        id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
        nom:
          type: string()
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
        date:
          type: date(25)
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
        hh:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
      relations:
        Client:
          local: id
          foreign: id
          type: one
    merci

  2. #2
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Lors de instanciation de l'objet ClientForm, il vérifie que l'objet de données donné en argument est bien de la classe déclarée (par getModelName défini dans lib/model/doctrine/base/BaseClient.class.php.

    La méthode retourne un nom qui me semble normal.

    Par contre ta requête, elle, ne retourne pas une instance de lib/model/doctrine/client.class.php

    Essayes avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #clientTable.class.php (non testé)
    function modifier(){
      return Doctrine_Core::getTable('Client')
                ->createQuery('c')
                ->leftJoin('c.Kk')
                ->where('c.hh=2')
                ->andWhere('c.id = ?', 2)
                ->execute();
    }
    Quoique, à mon avis, le problème provient de leftJoin(''). A vérifier.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  3. #3
    Membre régulier
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2011
    Messages
    444
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2011
    Messages : 444
    Points : 108
    Points
    108
    Par défaut
    merci. mais la requette s'marche bien déja tester je croi que le probléme vient de la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class ClientForm extends BaseClientForm
    {
      public function configure(){
     
    foreach ($this->object['Kk'] as $index=>$Kk)
        {
          $this->embedForm('gg', new KkForm($Kk));
     
        }
    et dans _form voici un extrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      <tr>
            <th><?php echo $form['prenom']->renderLabel() ?></th>
            <td>
              <?php echo $form['prenom']->renderError() ?>
              <?php echo $form['prenom'] ?>
            </td>
          </tr>
                <tr>
            <td>
              <?php echo $form['gg']->renderError() ?></td>
            <td>  <?php echo $form['gg'] ?>
            </td>
          </tr>

  4. #4
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Ta requête te retourne le bon résultat mais visiblement pas au bon format.
    As-tu essayé sachant que tu ne veux retourner qu'un seul objet client, de remplacer execute() par fetchOne() ?

  5. #5
    Membre régulier
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2011
    Messages
    444
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2011
    Messages : 444
    Points : 108
    Points
    108
    Par défaut
    merci.oui j'ai déja essayé d'une facon direct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      public function executeEdit(sfWebRequest $request)
      {
         $client = Doctrine_Query::create()
    		->from('Client')
    		->leftJoin('Client.Kk')
                    ->where('hh=2')
                    ->andWhere('Client.id = ?', 2)
               ->fetchOne();
     
       $this->form = new ClientForm($client);
     
      }

  6. #6
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Et ?
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  7. #7
    Membre régulier
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2011
    Messages
    444
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2011
    Messages : 444
    Points : 108
    Points
    108
    Par défaut
    bonjour,
    voila c'est bon s'amarche bien update et insert mais quand je clique pour modifier il affiche le formulaire du module ou en est rempli des donné c'est bon et il affiche le formulaire que j'ai imbriqué remplis des donné mais il ajoute un formulaire vide du formulaire imbriqué je ne sais pas d'ou sa vient comme si je fait l"apelle 2 fois pour résumé:
    dans _form :
    et dans ClientForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class ClientForm extends BaseClientForm
    {
      public function configure(){
     $a = new KkForm();
     
    foreach ($this->object['Kk'] as $index=>$Kk)
        {
          $a->embedForm('gg', new KkForm($Kk));
        }
        $this->embedForm('gg', $a);
     
       }}

  8. #8
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Citation Envoyé par benhsaien Voir le message
    bonjour,
    voila c'est bon s'amarche bien update et insert mais quand je clique pour modifier il affiche le formulaire du module ou en est rempli des donné c'est bon et il affiche le formulaire que j'ai imbriqué remplis des donné mais il ajoute un formulaire vide du formulaire imbriqué je ne sais pas d'ou sa vient comme si je fait l"apelle 2 fois pour résumé
    Pourrais-tu reformuler ta phrase s'il te plait ? J'ai vraiment du mal à comprendre quel est ton problème.

  9. #9
    Membre régulier
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2011
    Messages
    444
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2011
    Messages : 444
    Points : 108
    Points
    108
    Par défaut
    oui bien sur:
    voila je travaille avec un formulaire imbriqué.j'ai 2 module client et Kk et tous s'amarche bien (l'affichage des 2 formulaire et l'enregistrement) puis j'ai pensé d'executer la fonction executeEdit et j'ai mis dedon ma propre fonction.
    au debut quand je clique sur modifier le formulaire se rempli seulement par les donné du client mais pour Kk nn puis j'ai fait une boucle sur embed la voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class ClientForm extends BaseClientForm
    {
      public function configure(){
     $a = new KkForm();
     
    foreach ($this->object['Kk'] as $index=>$Kk)
        {
          $a->embedForm('gg',new KkForm($Kk));
        }
     
    $this->embedForm('gg',$a);
       }}
    et l'a les formulaire sont rempli pour modifier mais
    il m'affiche un formulaire de plus pour le formulaire imbriqué .et je suis sur que le probléme vient du code que je vient de cité.

  10. #10
    Membre régulier
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2011
    Messages
    444
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2011
    Messages : 444
    Points : 108
    Points
    108
    Par défaut
    ou en peu dire. comment chargé les donné dans formulaire pour le module ou en est c'est normal et pour le module imbriqué ??? le cas quand en veux modifier (action: executeEdit ).

  11. #11
    Membre régulier
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2011
    Messages
    444
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2011
    Messages : 444
    Points : 108
    Points
    108
    Par défaut
    la solution est :
    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
    class ClientForm extends BaseClientForm
    {
      public function configure(){
     
     
             //condition sur le cas de create car isnew retourne create
             if($this->getObject()->isNew()) {
             $this->embedForm('gg', new KkForm());
             }
     
             //le signe  ! donc soit update ou delete
             if(!$this->getObject()->isNew()) {
             $a = new KkForm();
             foreach ($this->object['Kk'] as $index=>$Kk) {
             $this->embedForm('gg',new KkForm($Kk)); }
             $a->embedForm('gg',$a);}
     
    }
    }

Discussions similaires

  1. [Struts] - Déclenchement d'une action dans un formulaire imbriqué
    Par Dabat dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 19/03/2009, 15h14
  2. Parcour des getElementById dans un formulaire imbriqué ?
    Par DrySs dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/10/2007, 19h03
  3. formulaire imbriquer + popup
    Par luan220 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/10/2007, 12h11
  4. Probleme Formulaire imbriques
    Par gloglo dans le forum Struts 1
    Réponses: 10
    Dernier message: 30/08/2006, 20h30
  5. formulaire imbriqué
    Par jani dans le forum Langage
    Réponses: 9
    Dernier message: 18/01/2006, 15h40

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