@Arik

Где и как лучше собирать показ модели?

Шаблон advanced, но наверно уже не важно будет с 3 версии.
Есть обычные AR-модели в common, во frontend и backend они практически не заменяются,
практически голые, т.е. как храним в БД так отдаются.

Теперь нужно это все показывать во вью, отдавать json'ом или еще что. Для API наверно будет уместно отдавать как есть +/- мелкие помогайки, а вот для HTML (frontend/backend) как лучше поступать?

1. Прям в модели хранить виды
<?php
echo $post->publicDate(); // <date format="***">23 янв 2019</date>
echo $post->icon(); // <span class="icon icon-hot"></date>
echo $post->shortCardView(); // <artcile>.$title..$descr..$date</artclie>


2. Наследоваться от \yii\helpers\Html и юзать что-то вроде PostHtml
<?php
echo PostHtml::publicDate($post);
echo PostHtml::icon($post);
echo PostHtml::shortCardView($post);

$postHtml = PostHtml::create($post);
echo $postHtml->publicDate();
echo $postHtml->icon();
echo $postHtml->shortCardView();


3. Через создания виджетов:
<?php
echo PostWidget::publicDate($post);
echo PostWidget::icon($post);
echo PostWidget::shortCardView($post);


Понял что кучу вьюх в копи-пастах и не очень хочется в модель отправлять html, но как бы модели принадлежат приложениям (frontend/backend) и может здесь уже не страшно хранить верстку?

Или есть более простой вариант?
  • Вопрос задан
  • 46 просмотров
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Точно нет, если по какой-то причине не хотите это видеть во view, то или в Helper или в Widget запаковываем.
Выбор между виджетом и хелпером зависит от сложности верстки и/или наличия зависимостей (js файлы, шрифты и т.д.).

Шаблон advanced, но наверно уже не важно будет с 3 версии.

В контексте данного вопроса и сейчас не важно это advanced или basic или какой-то другой шаблон.

Теперь нужно это все показывать во вью, отдавать json'ом или еще что.

Не могу себе представить ситуацию при которой из контролера мы передаем данные в Json формате. Это только при ajax запросах, но тогда view нет как такового.

Для API наверно будет уместно отдавать как есть +/- мелкие помогайки

Ну если это REST api то там и контролер другой и модели имеют дополнительные методы. Не совсем понимаю что значит "как есть"
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Kozlovdaniil
Php/Python developer
Приветствую. В моделях вёрстку хранить - это в любом случае плохо. Нарушение MVC в чистом виде :)
Я, подобные действия, переношу в виджеты.
Между хелпером и виджетом я бы всё-таки выбрал виджет. Это если какая-то логика должна быть в коде. Типа, выбор активного элемента.
В противном случае - можно вынести в отдельное представление, куда-нибудь в common и рендерить в других представлениях
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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