私はユーザコントローラとユーザモデルを持っています。このモデルと関連するデータベーステーブルは認証に使用され、当然パスワードフィールドがあります。CakePHP 1.3でパスワードフィールドを持つフォームを扱う最も良い方法は?
$this->data
と私のedit
を呼び出すと、パスワードフィールドにハッシュされたパスワードが私のedit
ビューに入ります。当然のことながら、40文字の値を持つパスワードフィールドは必要ありません。このフィールドは、保存時に再ハッシュされます。
function edit($id) {
$this->User->id = $id;
if (empty($this->data)) {
$this->data = $this->User->read();
}
else {
if ($this->User->save($this->data)) {
$this->Session->setFlash('User has been updated.');
$this->redirect(array('action' => 'view', $this->User->id));
}
}
}
そして、私の見解は、次のようになります:
私の行動は、このようになります
<h2>Edit User</h2>
<?php
echo $this->Form->create('User', array('action' => 'edit'));
echo $this->Form->input('username');
echo $this->Form->input('password');
echo $this->Form->input('first_name');
echo $this->Form->input('last_name');
echo $this->Form->input('email');
echo $this->Form->end('Save User');
?>
私は「doesnのユーザーが自分のアカウント(ユーザー名など)を編集するためのフォームを持つことができますどのように空白のままにするとパスワードを更新しますが、ユーザがパスワードフィールドに新しいパスワードを入力した場合はパスワードを更新しますか?
もちろん!ありがとう。パスワードを変更するための別のフォームを表示します。 –
一般に、ユーザー編集フォームはパスワードを処理しません。編集に関連付けられたアクションでは、セーブコールのフィールドキーを使用してパスワードフィールドも許可されません。パスワードフィールドの検証が "required" => true(ユーザーを保存するためにデータ配列内になければならない)に設定されていない限り、フィールドは一般的な編集フォームには表示されません。 –
クリーンなアプローチの動作を使用します。https://github.com/dereuromark/tools/blob/master/models/behaviors/change_password.php – mark