2011-06-29 4 views
2

J'ai deux modèles: Bar HABTM Foo. Maintenant, j'ai bars_foos rejoindre la table avec des champs supplémentaires. Lorsque j'ajoute une nouvelle barre avec certaines associations Foo ou vice versa, j'ai besoin d'effectuer de nombreuses vérifications de validation, que les nouvelles associations soient casher. Les vérifications sont basées sur les champs supplémentaires définis et les associations déjà enregistrées.CakePHP - HABTM avec modèle prédéfini

Où dois-je exécuter ces validations? Dans le contrôleur Bar/Foo? Ou devrais-je créer un modèle BarsFoo avec des règles de validation? Quand je garde une relation HABTM pour obtenir toute la magie automatique de Cake, je ne trouve pas un moyen de dire à Cake d'utiliser mon propre modèle de BarsFoo prédéfini avec des règles de validation. Cake crée son propre modèle virtuel et ignore le mien.

Ou devrais-je (dans ce cas précis) diviser HABTM en relation hasMany-belongsTo-hasMany, où je peux utiliser mon propre modèle BarsFoo?

Répondre

2

Vous pouvez définir votre modèle de jointure avec la touche with et créer validateurs là:

public $hasAndBelongsToMany = array(
    'Bar' => array(
     … 
     'with' => 'BarFoos' 
    ) 
); 

http://book.cakephp.org/view/1044/hasAndBelongsToMany-HABTM

+0

Eh bien, je l'ai essayé, mais ne tient pas compte de gâteau mon modèle de toute façon. J'ai une table bars_foos, Cake crée automatiquement un modèle BarsFoo pour moi, mais quand je crée un modèle bars_foo.php avec la classe BarsFoo et que je le spécifie avec "with => 'BarsFoo'", Cake n'essaiera même pas de charger la classe. –

+0

Oh, idiot moi! Je devais spécifier "avec" dans les deux modèles. Je vous remercie! Maintenant tout fonctionne parfaitement. –