2011-12-29 3 views
2

Я запрограммировал Rails, Django, Zend и CakePHP. Кроме того, Wordpress и Drupal.CodeIgniter MVC Model Logic

Теперь я «догоняю до скорости» в качестве довольно большого приложения в CodeIgniter.

Как правило, мой опыт работы с каркасами MVC привел меня к мысли, что модели представляют собой бизнес-логику в отношении реальных таблиц базы данных. В документах CodeIgniter и в базе кода, которую я просматриваю, я вижу созданные модели, которые представляют что-то неопределенное, как страница. Многие бизнес-логики написаны непосредственно в этих моделях, и они включают другие фактические модели данных. Я не уверен, что это идеально и после MVC.

Следует ли создавать модели за пределами моделей данных?

Кроме того, скажем, у меня есть модель данных, представляющая пользователя (таблица user в БД). В этой пользовательской таблице есть столбец с именем gender типа enum ('male', 'female'). Теперь я хочу заполнить раскрывающийся список вариантами gender из столбца перечисления.

Где наиболее уместно поставить эту логику?

Пользовательская модель - это объект, используемый для представления одного пользователя или строки в db ... справа? Поэтому не представляется возможным включить функцию в модель/класс пользователя, называемую «get_gender_options», потому что, хотя функция связана с таблицей пользователя, она НЕ относится к одному пользовательскому объекту. В Zend такая логика может быть встроена в сам объект формы.

Существует не «правильный» ответ, только один можно считать наиболее подходящим ...

ответ

0

я бы, наверное, просто поставил «get_gender_options» в модели, а не придерживаться его в представлении для формы , Чтобы он был DRY, но не помещал его в модель, я бы создал помощника, чтобы держать это.