ZF2: параметры, поступающие с маршрута, очищаются после отправки формы
Я использую AbstractTableGateway
а также HydratingResultset
делать операции БД. (с BjyProfiler), когда я публикую свои данные формы с действием добавления, оно работает, но действие редактирования не работает. когда я делаю привязку, это работает, но я перенаправлен на страницу добавления, потому что отправка формы сбрасывает параметры, поступающие с маршрута.
вот мой код для editAction()
(то же самое с альбомом editAction())
$id = (int)$this->params()->fromRoute('id');
if (!$id) {
return $this->redirect()->toRoute('voyage', array('action'=>'add'));
}
$voyage = $this->getVoyageTable()->getVoyage($id);
$form = new VoyageForm($this->getTypeVoyageTable());
$form->bind($voyage);
$form->get('submit')->setAttribute('value', 'Edit');
$request = $this->getRequest();
if ($request->isPost()) {
$form->setData($request->getPost());
if ($form->isValid()) {
$this->getVoyageTable()->saveVoyage($voyage);
// Redirect to list of voyages
return $this->redirect()->toRoute('voyage');
}
}
return array(
'id' => $id,
'form' => $form,
);
}
и мой стол:
class VoyageTable extends AbstractTableGateway
{
protected $table ='voyages';
public function __construct(Adapter $adapter)
{
$this->adapter = $adapter;
$this->resultSetPrototype = new HydratingResultSet();
$this->resultSetPrototype->setObjectPrototype(new Voyage());
$this->initialize();
}
[...]
Может ли кто-нибудь помочь мне? Как я могу решить эту проблему? Благодарю.
1 ответ
Вам необходимо сообщить форму о гидраторе, так как ClassMethods не используется по умолчанию
$form->setHydrator(new ClassMethods());