2009-10-20 9 views
4

Je développé une application avec différents CVM en utilisant le cadre YiiVues: y compris plusieurs vues dans une vue

Par exemple

J'ai créé une couche crud pour plus de détails sur le contact des étudiants et des cours d'étudiants, etc.

Tout a fonctionné parfaitement puisque chacun avait son propre menu, et quand on a cliqué chacun sa propre vue rendue.

Maintenant, mon client veut tout sur une page, et est assez persistant, nous parlons de 7 MVC qui doivent être affichés sur une page. Chaque MVC possède son propre contrôleur, modèle et vue et sa propre table DB. Comment puis-je tout afficher sur une page sans réécrire l'ensemble de l'application? Est-ce possible.

Répondre

6

Si j'ai bien compris votre problème, vous voulez simplement fusionner tous les éléments du menu et afficher la navigation complète sur chaque page.

En séparant les menus en vues autonomes et en incluant chacune d'entre elles dans une vue de navigation, vous pouvez avoir un code non-répétitif bien structuré.

$this->renderPartial('anotherView'); 

est à peu près tout ce que vous devez savoir pour commencer. Ceci est uniquement appelable dans les vues car $this fait référence à l'objet contrôleur actuel.

+0

Oui cela fonctionne, mais si je veux afficher le contrôleur Student_Contact dans les vues Étudiant (MVC), comment faire? – Roland

+0

En général, il est déconseillé de faire appel à des contrôleurs. Si vous avez un code commun que plusieurs contrôleurs utilisent, je vous recommande de le mettre dans les modèles. – pestaa

+0

Je n'ai pas beaucoup de temps pour réécrire n'importe quel code sinon je le ferais d'une autre façon, ce qui fonctionne est-ce $ model = new Student; $ this-> renderPartial ('student_Contact/show', array ('model' => $ model)); mais $ model = new Student_Contact; $ this-> renderPartial ('student_Contact/show', array ('model' => $ model)); ne veut pas travailler – Roland

3

Vous pouvez utiliser les vues d'autres contrôleurs:

$ this-> renderPartial ('application.views.student_Contact.show', array ('modèle' => $ model));

Espérons que cela aide.

+0

Merci, je vais essayer si j'ai besoin de refaire ça – Roland