- У меня есть таблица пользователей со многими полями, такими как имя пользователя, имя, адрес электронной почты, пароль, пол, день рождения, аватар и т. Д. Я описал их все в модели Users мое приложение ZF2, используя InputFilter.
Проблема заключается в следующем: - У меня есть несколько форм, как основные настройки (только имя, пол и день рождения полей), и я хотел бы изменить только эти три поля в базе данных с помощью этой формы (и соответственно редактировать другие поля, такие как пароль и электронная почта в других формах на других страницах сайта). Однако, это не похоже на работу:Zend Framework 2 InputFilter и поля формы
$request = $this->getRequest();
if ($request->isPost()) {
$users = new Users();
$form->setInputFilter($users->getInputFilter());
$form->setData($request->getPost());
if ($form->isValid()) {
$users->exchangeArray($form->getData());
$this->getUsersTable()->editUser($users, $userInfo->user_id);
$message = 'Профилът ви беше успешно променен!';
}
}
Вот форма, которую я хочу обновить только поля имя, дату рождения и пол.
А вот модель:
public function editUser(Users $user, $userID) {
$data = array(
'name' => $user->name,
'birthday' => $user->birthday,
'sex' => $user->sex,
);
$this->tableGateway->update($data, array('user_id' => $userID));
}
$ форм-> GetMessages() возвращает пустой массив и var_dump ($ form-> IsValid) возвращает логическое значение ложь. Если я удалю все другие поля и фильтры MySQL в InputFilter, и я сохраняю только три поля (имя, день рождения и пол) в модели, все в порядке, и валидация формы работает. Но когда я описываю все остальные поля таблицы «users» в модели, это не так. Надеюсь, я объяснил это хорошо. Есть идеи?
Спасибо, приятель! Ты просто спас мою задницу! –