Должен ли я объединить мои контроллеры создания и обновления? - PullRequest
3 голосов
/ 27 ноября 2010

Мои контроллеры для обновления и создания объекта довольно похожи - они выполняют одинаковую проверку формы и перенаправление.Но они, конечно, вызывают разные методы в модели.Должен ли я объединить их или оставить их отдельно?Или я должен просто сделать отдельную вспомогательную функцию для проверки?

Плюсы:

  • Один контроллер вместо двух
  • Нет дублированияпроверочный код
  • Представление (которое я слил) всегда может указывать на один и тот же контроллер

Минусы:

  • объединенный контроллер более сложен - есть пара мест, где я должен проверить, является ли это обновлением или созданием.

Ответы [ 6 ]

2 голосов
/ 27 ноября 2010

Я почти всегда объединяю их. Та же проверка, те же самые указатели страниц первой страницы и т. Д. Есть несколько проверок, которые вы должны сделать, но я думаю, что они перевешивают обратную сторону.

И когда приходит время добавлять поля или изменять логику обработчиков, это сделать намного проще.

0 голосов
/ 23 февраля 2011

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

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

MVC - это то, что нужно делать вещи маленькими и простыми, верно?Зачем это смешивать?

0 голосов
/ 02 декабря 2010

У меня не было бы другого контроллера, только разные методы в одном контроллере.

Контроллером будет "blog.php", тогда обновление - это один метод, а вставка - другой.

Например:

blog/add
blog/update/1

Таким образом, вы можете установить проверку в свойствах контроллера и использовать ее только один раз.

Вы даже можете использовать ту же форму, если создаете массив $ data ['blog'] на основе записи или взяты из базы данных. Это может быть слишком далеко, но в некоторых ситуациях это имеет смысл.

0 голосов
/ 02 декабря 2010

Обновление и вставка - это две разные вещи.

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

Я должен добавить, что проверка не влияет. Вы вызываете функцию проверки независимо от вставки или обновления. Если проверка не пройдена, вы снова отображаете форму. Если это удастся, вы делаете обновление или вставляете.

0 голосов
/ 27 ноября 2010

Я бы не стал объединять два контроллера (мне хотелось бы иметь некоторую однородность), быть СУХИМЫМ (что это действительно важно) и сохранить метод управления контроллеров тонким, я бы лучше создал метод для общей проверки.

0 голосов
/ 27 ноября 2010

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

...