@kirill-93

Какая сущность должна рендерить в mvc?

Делаю MVC в академических целях.
Есть главная модель, от которой наследуются остальные модели. В этой главной модели описан метод render(), который принимает название файла вью и отображает его.
То есть я в контроллере вызываю модель, что-то с ней делаю, наполняю ее данными, а затем вызываю $model->render().
Правильно ли это? Или мне нужно для этого иметь класс View с методом render()? И если так, то где этот класс View должен храниться?
У меня директория app и 3 поддиректории - контроллеры, модели, вью.
Спасибо!
  • Вопрос задан
  • 198 просмотров
Пригласить эксперта
Ответы на вопрос 4
PravdorubMSK
@PravdorubMSK
Правильно ли это?
нет не правильно. процесс построения конечного результата из данных и шаблона должен быть универсален и не должен быть привязан к модели. модель ничего о шаблонах не должна знать.

Или мне нужно для этого иметь класс View с методом render()?
ага

И если так, то где этот класс View должен храниться?
как свойство контроллера, например.

class controllerMy {
    public function doit() {
        // данные из базы, например 
        $this->getView()->render('my.tpl', $data);
        // произвольные данные  
        $this->getView()->render('my.tpl', ['hellow' => 'привет петя']);
    }
}

- это абстрактно. зависит от реализации.
Ответ написан
Комментировать
Decadal
@Decadal
Вы видели когда-нибудь такие вот маленькие модельки машинок? Такие, которые можно взять, покатать по полу, и они вроде как едут, колёсики крутятся? Проведя аналогию, ваши модели, которые делают рендер вьюх, это те самые модельки автомобилей, которые сами куда-то едут, и вы им не нужен.
А они должны стоять на месте, и это вы должны решать, куда им ехать, или где стоять. От моделей требуется только чтобы колёсики крутились, может, дверки открывались и закрывались, а уже от вас требуется решать, закрывать им дверки, или катить их по полу.
Ответ написан
Комментировать
@morricone85
в фреймворке Yii2 $this->render вызывается в контроллере и наследуется от базового контроллера. Так, что в модели, это делать не стоит.
Ответ написан
Комментировать
DShcherbakov
@DShcherbakov
Всегда делал модель Вид оО
https://github.com/denscherbakov/profit.local/blob...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы