簡體   English   中英

Zend Framework 2 InputFilter和表單字段

[英]Zend Framework 2 InputFilter and form fields

  • 我有一個'users'表,其中包含許多字段,如用戶名,名稱,電子郵件,密碼,性別,生日,頭像等。我已經在我的ZF2應用程序的Users模型中使用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));
}

$ form-> getMessages()返回一個空數組,而var_dump($ form-> isValid)返回布爾值false。 如果刪除所有其他MySQL字段和InputFilter中的過濾器,並且在模型中僅保留三個字段(名稱,生日和性別),則一切正常,並且表單驗證有效。 但是,當我在模型中描述“用戶”表的所有其他字段時,事實並非如此。 希望我能很好地解釋。 有任何想法嗎?

當您只想保存部分數據時,可以使用“驗證組”來驗證某些字段:

http://framework.zend.com/manual/2.0/en/modules/zend.form.quick-start.html#validation-groups

例如:

$form->setValidationGroup('name', 'sex', 'birthday');
$form->setData($data);
if ($form->isValid()) {
    // Contains only the "name", "sex", "birthday"
    $data = $form->getData();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM