Как создать функцию добавления и редактирования, используя только одну форму Zend? - PullRequest
2 голосов
/ 29 февраля 2012

Я создал одну форму, которая расширяет форму Zend.Для добавления новой записи это работает нормально.Но я хочу, чтобы эта же форма работала для обновления записи.Таким образом, поля формы устанавливаются для редактируемой записи?Какова лучшая практика для таких случаев?

Ответы [ 2 ]

3 голосов
/ 01 марта 2012

Если вы хотите повторно использовать формы, это довольно просто:

  1. не помещайте действие в форму, назначьте действие в контроллере$form->setAction('/path'); (это также переопределит действие, заданное вами в форме)

  2. Удалите все элементы формы, которые не требуются для текущей цели, обычно форма добавления будет иметь несколько элементовФорма обновления.$form->removeElement('elementName');

  3. Измените все метки, которые необходимо изменить.$form->submit->setLabel('Update');

  4. заполнить форму данными.$form->populate('dataArray');

Затем просто обработайте форму как обычно.

2 голосов
/ 29 февраля 2012

Заполните форму в вашем контроллере данными из БД, но если форма отправлена, она будет заполнена данными $_POST от пользователя

$entityData = $model->getSomeEntity(); //and perhaps ->toArray() if applicable
$form->populate($entityData);

if ($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
    $newData = $form->getValues();
    //$model->update($newData, ...);
}
...