2011-08-12 4 views
0

je les associations de modèle suivantes:modèles Saving belongsTo CakePHP

Question belongsTo Category 
Category hasMany Question 
Question hasMany Answer 
Answer belongsTo Question 

Je veux être en mesure de créer une nouvelle catégorie lors de la création d'une question, mais je reçois une erreur de validation Category.id, même si je ne suis pas envoi définissant le Category.id dans le tableau $this->data. Je crée avec succès de nouvelles réponses dans le même formulaire, mais la catégorie n'est pas créée.

Ma forme:

<h3>Create multiple choice question</h3> 
<?php 

echo $this->Form->create('Question', array('action' => 'addmc')); 
echo $this->Form->input('Question.name'); 
echo $this->Form->input('Question.questiontext', array('label' => 'Question Text (What students will see)')); 
echo $this->Form->input('Question.generalfeedback', array('label' => 'General feedback (Feedback student will see when reviewing question)')); 

for ($i = 0; $i < 4; $i++) { 
    echo $this->Form->input('Answer.'.$i.'.answer', array('label' => 'Answer ' . ($i+1))); 
    echo $this->Form->input('Answer.'.$i.'.score', array('label' => 'Score (Number from 0 to 100)')); 
} 
echo $this->Form->input('Category.0.name', array('label' => 'Category')); 
echo $this->Form->button('Save question', array('class' => 'form')); 
echo $this->Form->end(); 

?> 

J'utilise saveAll dans le contrôleur. J'ai essayé en supprimant la règle de validation pour le Category.id. L'opération de sauvegarde a été effectuée mais la catégorie n'a pas été créée.

+0

Vérifiez que '' required '=> true' n'est pas associé à votre règle de validation 'Category.id'. – deizel

+0

yeap .. mis à faux ... et la règle est juste numérique – AlexBrand

+0

Je pensais que peut-être je ne peux que créer hasMany modèles, mais pas appartient à des modèles, mais je ne suis pas sûr – AlexBrand

Répondre

1

Dans le contrôleur, vous devez d'abord enregistrer la catégorie, obtenir cet ID inséré et l'affecter à category_id dans la question, puis vous pouvez utiliser saveAll sur la question et les réponses.

0

Si Question appartient à Catégorie, vous avez probablement un champ Question.category_id ... Celui qui devrait être utilisé pour choisir la catégorie dans une boîte de sélection (au moins, c'est comme ça que je pense que vous voulez que ça fonctionne). La façon dont vous essayez d'y parvenir maintenant n'a aucun sens pour Cake.

+0

Eh bien ce champ n'est pas dans ma forme. Mais je pensais la même chose ... à cause de la catégorie de relation qui doit être choisie et non créée ... Mais y a-t-il un moyen de contourner cela? – AlexBrand

+1

J'ai mal lu ce que vous essayez de faire ... Aussi une fonctionnalité intéressante serait un select normal (category_id) qui contient toutes les catégories actuelles et une entrée exploitée Ajax à travers laquelle vous pouvez ajouter des catégories à la volée, ne pas oublier de mettre à jour le select après la requête Ajax afin qu'il contienne la nouvelle catégorie. –

Questions connexes