- ユーザー名、名前、電子メール、パスワード、性別、誕生日、アバターなどの多くのフィールドを持つ「users」テーブルがあります。ZF2 アプリケーションの Users モデルでInputFilterを使用してそれらすべてを記述しました。
問題は次のとおりです: - メイン設定のようないくつかのフォーム (名前、性別、誕生日のフィールドのみ) があり、このフォームを介してデータベース内のこれら 3 つのフィールドのみを編集したい (それぞれ次のような他のフィールドを編集したい)サイトの他のページの他の形式のパスワードと電子メール)。ただし、うまくいかないようです:
$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 フィールドとフィルターを削除し、モデル内の 3 つのフィールド (名前、誕生日、性別) のみを保持すると、すべて問題なく、フォームの検証が機能します。しかし、モデルの「users」テーブルの他のすべてのフィールドを記述すると、そうではありません。うまく説明できれば幸いです。何か案は?