- 我有一个“用户”表,其中包含许多字段,例如用户名、姓名、电子邮件、密码、性别、生日、头像等。我已经使用InputFilter在我的 ZF2 应用程序的用户模型中描述了所有这些字段。
问题如下: - 我有一些表单,如主要设置(只有姓名、性别和生日字段),我想通过这个表单只编辑数据库中的这三个字段(并分别编辑其他字段,如网站其他页面中其他形式的密码和电子邮件)。但是,它似乎不起作用:
$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 = 'Профилът ви беше успешно променен!';
}
}
这是我只想更新字段name、birthday 和 sex的表单。
这是模型:
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));
}
$form->getMessages() 返回一个空数组,而 var_dump($form->isValid) 返回布尔值 false。如果我删除 InputFilter 中的所有其他 MySQL 字段和过滤器,并且只保留模型中的三个字段(姓名、生日和性别),则一切正常,并且表单验证有效。但是当我在模型中描述“用户”表的所有其他字段时,它没有。希望我解释得很好。有任何想法吗?