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

ORM PHP Discussion :

[Doctrine] Pb avec embedForm / erreur "Invalid" sur une foreignKey lors du create


Sujet :

ORM PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 80
    Par défaut [Doctrine] Pb avec embedForm / erreur "Invalid" sur une foreignKey lors du create
    Bonsoir à tous,

    Je suis en train de réaliser un formulaire composé de plusieurs sous formulaires et j'ai une erreur de type "Invalid" lors de la sauvegarde (voir capture ci-joint). Je ne trouve pas de solutions , voici quelques explications de mon problème :

    une partie de mon schema.yml
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    Critere:
      connection: doctrine
      tableName: critere
      actAs: [Timestampable]
      columns:
        id:
          type: integer(4)
          primary: true
          autoincrement: true
        nom:
          type: string(50)
          notnull: true
        groupe_critere_id:
          type: integer(4)
      relations:
        CritereFrequentation:
          local: id
          foreign: critere_id
          type: many
    CritereFrequentation:
      connection: doctrine
      tableName: critere_frequentation
      actAs: [Timestampable]
      columns:
        frequentation_id:
          type: integer(4)
          primary: true
        critere_id:
          type: integer(4)
          primary: true
        valeur:
          type: integer(4)
          default: '0'
    GroupeCritere:
      connection: doctrine
      tableName: groupe_critere
      actAs: [Timestampable]
      columns:
        id:
          type: integer(4)
          primary: true
          autoincrement: true
        nom:
          type: string(50)
          notnull: true
      relations:
        Critere:
          local: id
          foreign: groupe_critere_id
          type: many
    Frequentation:
      connection: doctrine
      tableName: frequentation
      actAs: [Timestampable]
      columns:
        id:
          type: integer(4)
          primary: true
          autoincrement: true
        total:
          type: integer(4)
        periode:
          type: timestamp(25)
          notnull: true
        commentaire_emp:
          type: string()
        commentaire_coh:
          type: string()
        user_id:
          type: integer(4)
      relations:
        CritereFrequentation:
          local: id
          foreign: frequentation_id
          type: many
    la génération du formulaire et des sous-formulaires :
    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
     
    class FrequentationForm extends BaseFrequentationForm
    {
      public function configure()
      {
            //enlever l'affichage des champs date de création et date de mise à jour et user_id
            unset($this['created_at'], $this['updated_at'], $this['user_id']);
     
            $q = Doctrine_Query::create()
                ->select('nom, id')
                ->from('GroupeCritere');
     
            $groupes = $q->fetchArray();
            foreach ($groupes as $group) {
                $subForm = new sfForm();
     
                if ($this->getObject()->isNew()) {
     
                        $critere = new Critere();
                        $critere->setGroupeCritereId($group['id']);
                        //$this->embedForm($group['nom'], new CritereForm($critere));
                        $q = Doctrine_Query::create()
                            ->select('nom, id')
                            ->from('Critere c')
                            ->where('c.groupe_critere_id=?',$group['id']);
     
                        $criteres = $q->fetchArray();
                        foreach ($criteres as $critere) {
                            //insertion d'un formulaire imbriqué
                            $criterefrequentation = new CritereFrequentation();
                            $criterefrequentation->setCritereId($critere['id']);
                            $subForm->embedForm($critere['nom'], new CritereFrequentationForm($criterefrequentation));
                        }
                        $this->embedForm($group['nom'],$subForm);
     
                  }
     
                  }
              }
      }
    }

    C'est comme s'il n'arrivait pas à récupérer le critereId mais pourtant je l'affecte bien et je parviens à l'afficher sur mon formulaire.

    Je désespère un peu.... quelqu'un aurait-il une idée svp ?

    Merci beaucoup.
    Images attachées Images attachées  

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 80
    Par défaut
    Pensez-vous que ça peut venir d'une erreur de conception de mon schema.yml ? Ou plutôt du code de la fonction configure() qui génère le formulaire ?

    Merci

  3. #3
    Membre confirmé Avatar de kreatik
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Par défaut
    c'est pas un "problème" du côté de tes validators de formulaire ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 80
    Par défaut
    Merci pour ta réponse.

    Je n'ai pas touché aux validators... Est-ce que je dois modifier quelque chose ?
    Qu'est ce qui peut provoquer cette erreur "Invalid" ?

  5. #5
    Membre confirmé Avatar de kreatik
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Par défaut
    Quand tu dis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /enlever l'affichage des champs date de création et date de mise à jour et user_id
            unset($this['created_at'], $this['updated_at'], $this['user_id']);
    tu es sur de seulement les masquer et non pas de completement le supprimer ces champs du form ? created_at et updated_at peuvent être supprimés car les valeurs vont êtres générées par le sgbd [strike]mais pour user_id qui doit être une relation le champs doit être renseigné.[/strike] edit : ah non pourtant je viens de lire ton schema.yml...

    Pour masquer il faut (autre autres) passer par le fichier yml : display [champ1, champ2].

    Non ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 80
    Par défaut
    J'ai essayé d'enlever les unset mais rien n'y fait.

    Je me demande si la clé primaire de la table CritereFrequentation composée des clés étrangères critere_id et frequentation_id est bien définie dans mon schema...

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