PHP MVC просмотр цикла - PullRequest
       16

PHP MVC просмотр цикла

2 голосов
/ 14 января 2010

У меня есть шаблон для «предварительного просмотра блога», который представляет собой, в основном, миниатюру, заголовок и краткую выдержку из указанного блога в красивой лаконичной структуре, созданной для повторения в списке.

Как указано вышеЯ намерен вытащить топ-10 блогов на моем сайте из БД в моей модели, перенести их на контроллер, который будет предоставлять их для просмотра.По моему мнению, мне нужно будет просмотреть результаты и заполнить новый «предварительный просмотр блога» для каждого блога.

Мое текущее решение (которое, я думаю, может нарушить правила MVC) состоит в том, чтобы сделать это вшаблон представления:

foreach($this->blogs as $blog) {
    $tpl = new Output_Html();
    $tpl->title = $blog['title'];
    // ...assign other vars

    $tpl->render();
}

Почему-то это похоже на то, что представлению нельзя разрешать делать?Но как еще я мог бы пройтись по шаблонам «предварительного просмотра» внутри шаблона главной страницы?

Справка?

Ответы [ 3 ]

2 голосов
/ 14 января 2010

Учитывая, что представление отвечает за генерацию выходных данных, то, что вы здесь делаете, кажется нормальным: вы не делаете никаких «вычислений / бизнес-вещей / чего-то подобного» в своем представлении.

Единственная проблема, которую я имею, это то, что вы пишете здесь много кода; Я бы предпочел передать массив / объект $blog в View в целом и позволить View справиться с ним - вместо того, чтобы присваивать каждому свойству $blog View.


то есть что-то вроде этого кажется (просто идея - до вас, чтобы увидеть, как это может соответствовать вашему классу View) более красиво:

foreach($this->blogs as $blog) {
    $tpl = new Output_Html();
    $tpl->blog = $blog;
    $tpl->render();
}

Это означает, что, если ваш blog объект когда-либо изменяется, у вас есть только один вид для редактирования (для добавления или удаления материала) , и вам не нужно изменять каждый вызов этого представления. добавить / удалить один компонент / свойство $blog.

1 голос
/ 14 января 2010

Ответственность контроллера заключается в том, чтобы обрабатывать ввод и устанавливать модель в определенное состояние. Ответственность вашего вида заключается в том, чтобы визуализировать модель. Так что, я бы сказал, это нормально. Это похоже на рендеринг частичного представления или использование ViewHelper. View Helper инкапсулирует логику представления для динамических бизнес-данных.

0 голосов
/ 14 января 2010

Я согласен с Паскалем. Вместо того, чтобы выполнять эту операцию на вашем контроллере, просто передайте ее представлению и сделайте там все остальное. Позвольте контроллеру принять входные данные, предварительно обработать их с помощью моделей, а затем подготовить все для просмотра. Таким образом, вы по-прежнему гарантируете удобство сопровождения своего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...