CakePHPで次のものを作成したいと考えています:CakePHPで既存のレコードを更新する
開始ページ:ユーザはDBにあらかじめ存在するloginnameを入力します。テーブル名loginname。 ユーザーが正しいログイン名を入力すると、ユーザーは登録フォームに進みます。ここで、ユーザーは既存のレコードに個人データを追加できます。
ユーザーがフォームを保存すると、ログイン名のみのレコードに個人データが追加されます。
これは私が持っているものです:ページを起動するための
ロジック:
public function checkCodeRespondent() {
//set var
$password = $this->data['Respondent']['loginname'];
//set condition for hasAny function
$condition = array('Respondent.loginname'=>$password);
//if password matches continue to registreer
if($this->Respondent->hasAny($condition)){
//find data by password
$respondent = $this->findByPass($password);
//set var for current id
$id= $respondent['Respondent']['id'];
//redirect with current id
$this->redirect(array('action' => 'aanmelden', $id));
} else {
//if password does not match, return to index with errormessage
$this->redirect(array('action' => 'index'));
}
}
public function findByPass($pass) {
$respondent = $this->Respondent->find('first', array('conditions' => array('pass' => $pass)));
return $respondent;
}
そして、これは、レコードにデータを保存するためのロジックです:
public function registreren() {
if($this->request->isPost()) {
$this->Respondent->id = $id;
if ($this->Respondent->save($this->request->data)){
$this->Flash->success(__('Your post has been saved.'));
return $this->redirect(array('action' => 'index'));
} else {
}
}
私は私が得たと思いました私のIDは関数checkCodeRespondent()を介して動作していません。私は何を忘れているのですか、何が間違っていますか?私はもっと多くの情報を提供する必要がある場合は、私はもちろんのを助けて幸せです。
更新:のid値が空の場合にのみ、echo $form->input('id');
を追加する必要があります。私のコードで何を変更する必要がありますか?
機能登録中($ this-> Respondent-> id = $ id;この$ idはどこから来ていますか? またはregistreren($ id)のような関数のパラメータとして$ idを送信しようとしていますか? –
私は通常、あなたはURLからIDを取得することを理解しますが、私は自分自身のためにそれを理解することはできません、どのようにURLを使用せずにIDを得ることができます。 私はidを持つ隠し入力フィールドを追加したので、idを取得するために$ this-> Respondent-> idを使用しようとしました。しかし、それは動作していません。私は何が欠けていますか? – user2314339