2009-10-20 3 views
4

Я разработал приложение с различными MVCS с помощью Yii FrameworkПросмотров: в том числе нескольких видов в одном представлении

Например

Я создал Crud слой для Student Контактной информации и студенческих курсов и т.д.

Все работало отлично, так как каждый из них имел свое собственное меню, и при каждом нажатии отображался каждый отображаемый вид.

Теперь мой клиент хочет все на одной странице и довольно настойчив, мы говорим о 7 MVC, которые должны отображаться на одной странице. Каждый MVC имеет собственный контроллер, модель и представление, а также собственную таблицу DB. Как я могу отобразить их все на одной странице без повторной записи всего приложения? Это возможно.

ответ

6

Если я правильно понял вашу проблему, вы просто хотите объединить все пункты меню и показать полную навигацию на каждой странице.

Разделив меню на отдельные виды и включив каждый из них в навигационное представление, вы можете иметь хорошо структурированный неповторяющийся код.

$this->renderPartial('anotherView'); 

- это почти все, что вам может понадобиться, чтобы начать работу. Это можно назвать только в виде, поскольку $this относится к текущему объекту контроллера.

+0

Да, это работает, но если я хочу отобразить контроллер Student_Contact в представлениях Student (MVC), как это сделать? – Roland

+0

Как правило, это не рекомендуется для перекрестных вызовов. Если у вас есть общий код, используемый несколькими контроллерами, я бы рекомендовал поместить его в модели. – pestaa

+0

У меня нет много времени, чтобы переписать любой код, иначе я бы сделал это по-другому, что работает $ model = new Student; $ this-> renderPartial ('student_Contact/show', array ('model' => $ model)); но $ model = new Student_Contact; $ this-> renderPartial ('student_Contact/show', array ('model' => $ model)); не хочет работать – Roland

3

Вы можете использовать представление от других контроллеров:

$ this-> renderPartial ('application.views.student_Contact.show', массив ('модели' => $ модели));

Надеюсь, это поможет.

+0

Спасибо, я попробую, если мне нужно это сделать снова – Roland

Смежные вопросы