Как правильно обеспечить взаимодействие модель-контроллер? Если в модели ошибка, я возвращаю
$this
->request
->http_code(403)
->error(1, $message)
->html();
Это верно, если я запрашиваю модель из контролера, возвращающего страницу-верстку.
Если я запрошу модель через ajax запрос и будет ошибка - все ляжет.
Соответственно верни я ->json() - если я буду выдавать верстку - все опять ляжет.
Понятно что можно написать костыль в request - если $type = "html", но как это грамотно сделать?
Значит ли это, что модель всегда должна возвращать array() а все ошибки обрабатываются только в контроллерах?
Или есть путь хитрее?

21 Авг 2019 в 07:02
173 +1
0
Ответы
1

Для обеспечения правильного взаимодействия между моделью и контроллером в случае ошибок, можно использовать следующий подход:

Модель должна возвращать данные в виде массива (array), даже если это может быть неудобно с точки зрения организации данных внутри модели. Это позволит контроллеру более гибко обрабатывать данные, возвращаемые моделью, в зависимости от контекста запроса.

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

В контроллере можно проверить тип запроса (html или ajax) и соответственно вернуть ответ в нужном формате (html или json). Для этого можно использовать условие, основанное на параметре запроса или заголовке HTTP.

Можно также создать общий метод или класс для обработки ошибок в контроллерах, который будет анализировать массив данных, возвращаемых моделью, и возвращать ответ в нужном формате (html или json) с учетом ошибок или исключительных ситуаций.

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

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир