2010-08-20 23 views
0

My Self Inscrit la table Catégories est la suivante:CakePHP 1.3, assistant Form et Self Inscrit Tableau

id, name, description, parent_id 

I utilisé gâteau au four pour générer le modèle, contrôleur et vues. Le modèle a l'association $ belongsTo et $ hasMany configurée. Dans add() du contrôleur ,

$parentCategories = $this->Category->ParentCategory->find('list'); 
$this->set(compact('parentCategories')); 

est présent. Dans la vue ajouter, le cake bake généré forme est:

<?php 
     echo $this->Form->input('name'); 
     echo $this->Form->input('description'); 
     echo $this->Form->input('isincome'); 
     echo $this->Form->input('parent_id'); 
?> 

Quand je cours dans le navigateur, le champ id_parent est d'obtenir une baisse vers le bas, mais il est pas rempli toutes les données. Je

<?debug($parentCategories);?> 

dans la vue ajouter, et sorties heureusement

Array 
(
    [1] => Entertainment 
    [2] => Groceries 
) 

Mais ce tableau n'est pas utilisé pour le remplissage qui tombent vers le bas par l'aide du formulaire . Que devrais-je faire? Est-ce un bug avec l'aide de Cake's Form en 1.3? Il ne s'est jamais produit en 1.2 ...

Répondre

2

Lors de l'ajout d'une entrée pour field_id, l'assistant de formulaire recherche une variable appelée $fields. C'est-à-dire, le nom sans _id et pluralisé. $parentCategories ne correspond pas à cette description, donc il n'est pas utilisé. $parents serait.

Deuxièmement, $this->Category->ParentCategory est la même que $this->Category. Les deux font référence au modèle de catégorie. Pas besoin de passer par ParentCategory. Troisièmement, ce n'est généralement pas une bonne idée de joindre un modèle Tree à lui-même. Vous comprendrez pourquoi lorsque vous commencez à interroger avec des paramètres recursive supérieurs. Vous devriez plutôt en faire un proper Tree et utiliser les méthodes TreeBehavior pour l'interroger.

+0

Merci deceze, ça a marché! Mais je me demande pourquoi cuire généré une telle production alors .. Quoi que j'ai posté ci-dessus est le gâteau généré par le code généré! – Ashok

+0

@Asok C'est pourquoi vous ne joignez pas vous-même un modèle, cuire ne le gère pas très gracieusement. :) – deceze