@ruslite

Где лучше прописывать условия в YII2?

Есть несколько вопросов по yii2, а именно оформление кода.

1. Красиво ли и целесообразно писать условия и циклы в модели, а не в контроллере, если это удобнее?
2. Мне нужно выполнять ajax запросы из БД. Стоит это оформить прям в контроллере или равносильно вынести ajax во вьюшку и передавать через POST уже контроллеру?
3. Как лучше - делать все циклы с массивами в контроллере и переменные уже передавать во вьюшку или равносильно, что и разбирать массивы во вью?

Есть ли вообще какие-то правила по этому поводу - оформление кода?
  • Вопрос задан
  • 536 просмотров
Решения вопроса 1
@djay
1. Красиво ли и целесообразно писать условия и циклы в модели, а не в контроллере, если это удобнее?


Да желательно писать всё что связано с обработкой бизнес-логики (там парсинги всякие) в моделе. В контроллере же, нужно это вызывать и просто передавать переменные ($_POST, $_GET)

2. Мне нужно выполнять ajax запросы из БД. Стоит это оформить прям в контроллере или равносильно вынести ajax во вьюшку и передавать через POST уже контроллеру?


Но ведь УРЛ от Ajax-запроса все равно вызывает экшен контроллера. POST'ом следует выполнять только то, что изменяет что-то - пишет в базу например. А для выборки нужно использовать GET. Во вью задаётся клинтская логика, которая вызывает урл и в ответ делается что-то - обычно это в 99% делается именно так.

3. Как лучше - делать все циклы с массивами в контроллере и переменные уже передавать во вьюшку или равносильно, что и разбирать массивы во вью?


Ни в коем случае не нужно разбирать массивы во вью. Во вью нужно просто отображать эти подготовленные массивы, а подготавливатся они должны в моделе и в случае необходимости изменять своё содержимое через экшены.

Есть ли вообще какие-то правила по этому поводу - оформление кода?

Почитай что такое SOLID, Separation of Concerns

А что касается MVC:

- то модели должны быть толстыми (вся обработка должна быть только там)
- конроллеры тонкими (должны уметь только получать и передавать)
- а вью - тупыми (должны знать только как отображать)

Как-то так
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
amstr1k
@amstr1k
всё завит от того какой подход выберите именно вы. Можно вообще выделить слой сервисов которые будут делать ту или иную работу. Но я бы вьюхи использовал только для отображения данных
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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