私は、多くの楽器とジャンルを持つユーザーモデルを持っています。以下のコードを使用すると、楽器とジャンルは保存されません。CakePHP:ユーザーデータの保存すべてが自動的に失敗しますか?
$this->User->saveAll($this->data, array(
'fieldList' => array('User', 'UserInstrument', 'Genre')))
)
ただし、ユーザーには表示されません。私のデバッガ(User, UserInstrument, Genre, UserGenre, Instrument
)ではすべてのinvalidFields配列が空です。
私は気づい一つ奇妙なことは、しかし、ここにいることである:
public function beforeSave() {
// get the password reset
if(isset($this->data[$this->alias]['password_reset'])) {
$this->data[$this->alias]['password'] = $this->data[$this->alias]['password_reset'];
unset($this->data[$this->alias]['password_reset']);
}
// get rid of the password confirm
if(isset($this->data[$this->alias]['password_confirm'])) {
unset($this->data[$this->alias]['password_confirm']);
}
// hash the password
if (isset($this->data[$this->alias]['password'])) {
$this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
}
return true;
}
私はpassword_reset
とpassword_confirm
を設定解除していますが、保存が完了した後、これらのフィールドは魔法おそらく($this->data['User']
に戻って表示されます再び$_POST
から取得)。しかし、エラーがあった場合には、saveAll
はfalseを返します。私はエラーログにも何も持っていません。
なぜこれが黙って失敗しているのですか?ありがとう!
こんにちはKimsia、応答のために感謝します。私の 'beforeSave()'では、パスワードのハッシング**と**パスワードのリセットを受け入れています。これはユーザーが自分のアカウントを編集しているときに利用できます。 楽器とジャンルは、適切に保存されます。 'fieldList'に特定のフィールドを追加して、それが正しく保存されているかどうかを確認してから、ここにコメントします。 助けてくれてありがとう。 – Garrett
こんにちは@Garrett、これは私が通常ユーザー作成とユーザー更新のために行うことです。 新しいユーザーを作成するには、createNewUserDuringSignupという別のメソッドを使用する傾向があります。 このメソッドの内部では、$ this-> create();新しいユーザーのための他の関連するもの。 パスワードを更新するために、別の方法もあります。 beforeSaveに関しては、フィールドが存在することを確認するためにissetを追加する以外は、あなたのようにパスワードをハッシュします。 パスワードをリセットするためのnew_passwordというフィールドもハッシュします。 実際のコードを使用して詳細な説明が必要な場合はお知らせください。私はページ –
をやるつもりですので、もっと詳しい説明が必要ですか? –