В мое мнение Я предпочитаю использовать одно действие для него.Это держит все вещи вместе.Контроллер О'Пинни может выглядеть следующим образом:
- addAction (использует saveAction для сохранения)
- editAction (использует saveAction для сохранения)
- saveAction (не отображает себя)
Наличие единого метода для всей логики сохранения / редактирования контроллера - единственная причина (предположение!) Для его выполнения и дополнительное действие.Круто, держит все в одном месте.Но: это требовало и редактирования, и добавления, чтобы иметь абсолютно одинаковую логику.Как только if/else
как
public function saveAction()
{
if($action == 'edit)
{
// edit logic
} else if($action == 'add')
{
// add logic
}
}
будет иметь другую логику в зависимости от действия, это полностью использует идею одного действия.Поэтому, если вы знаете, что логика всегда одна и та же, и ее очень нелегко изменить, это способ сэкономить вам массу работы по кодированию:).
С другой стороны, если ваша логика добавления / редактированиянемного по-другому, я бы держал всю логику вместе, которая принадлежит друг другу:
- addAction (печатает форму и сохраняет на POST)
- editAction (печатает форму и сохраняет на POST)
Это может выглядеть как дублирование кода (а может и так), но тогда мои действия по редактированию / добавлению содержат около 3-6 строк кода.Но как только логика любого из них изменится, вы действительно узнаете это место.
Так что это личное мнение, я буду придерживаться отдельных действий, как только вещи станут более сложными.
(Примечание: к логике я обращаюсь к логике контроллера, в любом случае вся логика данных должна быть в модели)