модель или контроллер

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
stasuss
Сообщения: 10
Зарегистрирован: 2012.02.29, 08:47

модель или контроллер

Сообщение stasuss »

привет всемогущий, all!

зачитался литературой по MVC и задался вопросом. Куда же засунуть код для формирования excel таблиц в приложении на yii. в модель или контроллер. на счет контроллера везде пишут что он должен быть максимально простым и маленьким. а про модель в yii пишут что она бывает двух типов - либо для работы с формой, либо для работы с бд. вот и вопрос. либо я туплю дико, либо чего?) куда совать весь громоздкий код своего приложения?

всем спасибо за внимание)
Вещи не всегда такие, какими кажутся. По моему личному опыту они гораздо хуже. (инквизитор Титус Дрэйк)
Аватара пользователя
kosenka
Сообщения: 677
Зарегистрирован: 2009.09.26, 12:41
Откуда: москва
Контактная информация:

Re: модель или контроллер

Сообщение kosenka »

stasuss писал(а):Куда же засунуть код для формирования excel таблиц в приложении на yii. в модель или контроллер.
в модель
Аватара пользователя
andy_s
Сообщения: 127
Зарегистрирован: 2012.01.22, 13:15

Re: модель или контроллер

Сообщение andy_s »

Формирование таблицы может быть либо методом модели, либо отдельным поведением, но никак не может находиться в контроллере. Контроллер должен лишь вызвать метод генерации таблицы и отправить её пользователю.
esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

Re: модель или контроллер

Сообщение esche »

в хелпер =)
...
Аватара пользователя
stasuss
Сообщения: 10
Зарегистрирован: 2012.02.29, 08:47

Re: модель или контроллер

Сообщение stasuss »

andy_s писал(а):Формирование таблицы может быть либо методом модели, либо отдельным поведением, но никак не может находиться в контроллере. Контроллер должен лишь вызвать метод генерации таблицы и отправить её пользователю.
вот вопрос еще.. использую phpexcel. вывожу таблицу с помощью

Код: Выделить всё

$objWriter->save('php://output'); 
objWriter это класс phpecel.

в таком случае не понимаю как собственно контроллер будет передавать таблицу, сгенерированую с модели, пользоватулю.. опять создавать инстансы классов?

и еще напишите средний размер ваших контроллеров и моделей. интересно просто)
Вещи не всегда такие, какими кажутся. По моему личному опыту они гораздо хуже. (инквизитор Титус Дрэйк)
Аватара пользователя
andy_s
Сообщения: 127
Зарегистрирован: 2012.01.22, 13:15

Re: модель или контроллер

Сообщение andy_s »

Я с 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-классов :D
andreyrud
Сообщения: 265
Зарегистрирован: 2011.09.26, 14:59

Re: модель или контроллер

Сообщение andreyrud »

В Yii нет абстрактной модели данных. Т.е. модель привязана к конкретной таблице в ДБ или к форме. Если нужно построить сложный вывод данных из нескольких таблиц с расчетами промежуточных данных, то поручать это моделям трудно. Нужно либо городить сложные связи между данными и громоздить сложные запросы, либо формировать нужный массив с данными в контроллере. Таким образом не получается сделать контроллер простым. Или такой подход неправилен?
Аватара пользователя
andy_s
Сообщения: 127
Зарегистрирован: 2012.01.22, 13:15

Re: модель или контроллер

Сообщение andy_s »

Сделайте компонент, который будет собирать данные из нескольких моделей (каких - определяет контроллер). Так можно будет легко его тестировать и переносить между проектами. Код внутри контроллера никакими из этих качеств не обладает и не должен (про тестирование можно поспорить, но я не особый эксперт в этом деле пока :) ).
Ответить