модель или контроллер
модель или контроллер
привет всемогущий, all!
зачитался литературой по MVC и задался вопросом. Куда же засунуть код для формирования excel таблиц в приложении на yii. в модель или контроллер. на счет контроллера везде пишут что он должен быть максимально простым и маленьким. а про модель в yii пишут что она бывает двух типов - либо для работы с формой, либо для работы с бд. вот и вопрос. либо я туплю дико, либо чего?) куда совать весь громоздкий код своего приложения?
всем спасибо за внимание)
зачитался литературой по MVC и задался вопросом. Куда же засунуть код для формирования excel таблиц в приложении на yii. в модель или контроллер. на счет контроллера везде пишут что он должен быть максимально простым и маленьким. а про модель в yii пишут что она бывает двух типов - либо для работы с формой, либо для работы с бд. вот и вопрос. либо я туплю дико, либо чего?) куда совать весь громоздкий код своего приложения?
всем спасибо за внимание)
Вещи не всегда такие, какими кажутся. По моему личному опыту они гораздо хуже. (инквизитор Титус Дрэйк)
Re: модель или контроллер
в модельstasuss писал(а):Куда же засунуть код для формирования excel таблиц в приложении на yii. в модель или контроллер.
Re: модель или контроллер
Формирование таблицы может быть либо методом модели, либо отдельным поведением, но никак не может находиться в контроллере. Контроллер должен лишь вызвать метод генерации таблицы и отправить её пользователю.
Re: модель или контроллер
вот вопрос еще.. использую phpexcel. вывожу таблицу с помощьюandy_s писал(а):Формирование таблицы может быть либо методом модели, либо отдельным поведением, но никак не может находиться в контроллере. Контроллер должен лишь вызвать метод генерации таблицы и отправить её пользователю.
Код: Выделить всё
$objWriter->save('php://output');
в таком случае не понимаю как собственно контроллер будет передавать таблицу, сгенерированую с модели, пользоватулю.. опять создавать инстансы классов?
и еще напишите средний размер ваших контроллеров и моделей. интересно просто)
Вещи не всегда такие, какими кажутся. По моему личному опыту они гораздо хуже. (инквизитор Титус Дрэйк)
Re: модель или контроллер
Я с phpexcel не работал, но процесс я вижу примерно таким:
1) Запускается какое-то действие контроллера (actionExcelTable).
2) В контроллере вызывается метод модели createExcelTable() с некоторыми аргументами.
3) Метод отрабатывает и возвращает либо ссылку на файл, либо строку, либо ещё что-то, что можно отправить пользователю на скачивание.
4) Отправляем файл с помощью http://www.yiiframework.com/doc/api/1.1 ... ile-detail
По среднему размеру ничего сказать не могу, да и неправильный это вопрос какой-то Зато могу сказать, что там должно быть:
1) Проверка прав.
2) Проверка, пришли ли какие-то POST/GET данные.
3) Вызов некоторых методов моделей (их может быть и много, поэтому и размер увеличится). Очень желательно избегать использования объектов/методов, напрямую относящихся к созданию запросов к БД (напр., CDbCriteria).
4) Подключение отображения.
А вообще идеальный контроллер - это набор универсальных CAction-классов
1) Запускается какое-то действие контроллера (actionExcelTable).
2) В контроллере вызывается метод модели createExcelTable() с некоторыми аргументами.
3) Метод отрабатывает и возвращает либо ссылку на файл, либо строку, либо ещё что-то, что можно отправить пользователю на скачивание.
4) Отправляем файл с помощью http://www.yiiframework.com/doc/api/1.1 ... ile-detail
По среднему размеру ничего сказать не могу, да и неправильный это вопрос какой-то Зато могу сказать, что там должно быть:
1) Проверка прав.
2) Проверка, пришли ли какие-то POST/GET данные.
3) Вызов некоторых методов моделей (их может быть и много, поэтому и размер увеличится). Очень желательно избегать использования объектов/методов, напрямую относящихся к созданию запросов к БД (напр., CDbCriteria).
4) Подключение отображения.
А вообще идеальный контроллер - это набор универсальных CAction-классов
Re: модель или контроллер
В Yii нет абстрактной модели данных. Т.е. модель привязана к конкретной таблице в ДБ или к форме. Если нужно построить сложный вывод данных из нескольких таблиц с расчетами промежуточных данных, то поручать это моделям трудно. Нужно либо городить сложные связи между данными и громоздить сложные запросы, либо формировать нужный массив с данными в контроллере. Таким образом не получается сделать контроллер простым. Или такой подход неправилен?
Re: модель или контроллер
Сделайте компонент, который будет собирать данные из нескольких моделей (каких - определяет контроллер). Так можно будет легко его тестировать и переносить между проектами. Код внутри контроллера никакими из этих качеств не обладает и не должен (про тестирование можно поспорить, но я не особый эксперт в этом деле пока ).