Лучшая практика для обработки добавления / редактирования / удаления форм - PullRequest
1 голос
/ 28 сентября 2011

Я немного застрял в том, как мне следует подходить к формам в моем Zend-приложении. Сейчас я создаю две отдельные формы для addAction () и editAction () для каждого нужного мне объекта. Моя формула удаления всегда одна и та же, я просто меняю некоторые атрибуты на них.

Что мне интересно: что такое лучшая практика здесь?

Лично я думаю, что было бы лучше, если бы у нас были такие формы, как "Object1, Object2" вместо "Object1Add", Object1Edit, Object2Add, Object2Edit "

Резон я спрашиваю, потому что мне явно нужны две разные формы. Некоторые элементы НЕ должны изменяться вообще, поэтому я не хочу, чтобы пользователь их видел.

Метод может быть в $ form-> RemoveElement ('X') внутри контроллеров editAction ()

Почему я так думаю? Ну, простые ошибки - я могу добавить здесь одно поле и забыть его во второй форме или отобразить поля с тегом «disabled = 0» в одной форме, но не иметь этот запрос в другой.

Надеюсь, я проясняю себя достаточно :) Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 28 сентября 2011

Я предполагаю, что вы расширяете класс формы. Я бы добавил функции с именем edit или add в ваш класс, который выполняет соответствующую логику. Таким образом, вы сохраняете свою логику формы в форме, а не в контроллере.

1 голос
/ 15 февраля 2012

Это идеальное время для использования Factory Design Pattern .Не создавайте форму, используя конструктор, вместо этого используйте фабричные методы.Вот быстрый макет псевдокода:

static createAdd()
  form = new self()
  call form->initCommon
  call form->initAdd
  return form

static createEdit()
  form = new self()
  call form->initCommon
  call form->initEdit
  return form

initComon()
  add the common+validators elements

initAdd()
  add the elements+validators only used in Add

initEdit()
  add the elements+validators only used in Edit

Имеет смысл?

1 голос
/ 28 сентября 2011

Я бы точно сделал то, что вы сказали: 1 форма со всеми элементами. Затем, в зависимости от случая, просто используйте метод removeElement в форме, чтобы удалить ненужные элементы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...