Каким образом распределить код в модели и виде?

Недавно начал практиковаться в написание на Yii2. У меня возникла проблема с выводом записей. Весь код, который нужен работает, но по сути он находиться только в модели, можно(нужно) ли распределить его в модели и виде. Прошу подсказать мне как распределить код так, чтобы он работал находясь в модели и виде(если так будет правильно).

Controller
540dd657271a4c2da39fe25f19e56376.PNG

Model
03457e92452f4d95b7f9997925320152.PNG

View
83a8f7168faa4d6daef9272bd07a5f8f.PNG

Результат
410256b43a514643a77a50c989a0af43.PNG

Если я перенесу часть кода в контроллер, тогда не видит переменные $posts $posts2 $rows
$rating = RatingGroup::getPosts();
echo '<table class="table table-striped table-bordered">';
        echo '<thead>';
        echo '<tr>';
        echo '<td>#</td>';
        echo '<td>Студент</td>';
        echo '<td>Ср. балл</td>';
        foreach ($posts2 as $post2) {
            echo '<td>' . $post2->data . '</td>';
        }
        echo '</tr>';
        echo '</thead>';
/////////////////////
        echo '<tbody>';
        foreach ($posts AS $post){
            foreach ($rows as $key =>  $avalue) {
                foreach ($avalue as $value) {
                    echo '<td>' . $post->$value . '</td>';
                }
            }
            echo '</tbody>';
        }
        echo '</table>';
  • Вопрос задан
  • 323 просмотра
Пригласить эксперта
Ответы на вопрос 3
villiwalla
@villiwalla
HTML-верстка
В модель не надо пихать вьюху.
Приходит в контроллер, из него в модель и из модели в контроллер, а из контроллера во вьюху.
Ответ написан
Комментировать
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
controller - для запросов
view - для html
model - для данных

То что Вы сделали - это адская чепуха.
Ответ написан
Комментировать
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
Почему в модели какой-то хтмл? Это чистая абстракция работы с данными, никаким хтмлем там даже близко не должно пахнуть.
Модель умеет работать с данными, не знает ни о контроллере ни о представлении, тупо умеет достать из базы, сложить, поделить, запомнить в свойствах результат, сохранить в бд(ну, в зависимости от АР ИЛИ ДМ).
Контроллер создает объекты классов, передает им данные для инициации (полученные от роутера чаще всего), мутит с ними пару преобразований если надо, потом передает все данные объекту вьюшки. Все. Больше ничего не умеет. Посредник.
Вьюха - почти чистый хтмл(или другой тип отображения, хмл или жсон, не суть), плюс логика на уровне форич, для ВЫВОДА данных. Больше ничего практически нет.
А у вас какой-то винигрет получился. Завтра дизайн поменялся - лезем во все модели поменять внешний вид сайта. Просто звездец.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы