2016-06-14 11 views
1

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');を追加する必要があります。私のコードで何を変更する必要がありますか?

+0

機能登録中($ this-> Respondent-> id = $ id;この$ idはどこから来ていますか? またはregistreren($ id)のような関数のパラメータとして$ idを送信しようとしていますか? –

+0

私は通常、あなたはURLからIDを取得することを理解しますが、私は自分自身のためにそれを理解することはできません、どのようにURLを使用せずにIDを得ることができます。 私はidを持つ隠し入力フィールドを追加したので、idを取得するために$ this-> Respondent-> idを使用しようとしました。しかし、それは動作していません。私は何が欠けていますか? – user2314339

答えて

1

あなたはIDの隠しフィールドを追加した場合は、単に置き換える:

$this->Respondent->id = $id; 

をすることにより:

$this->Respondent->id = $this->request->data['Respondent']['id']; 
And in your view, give name="data[Respondent][id]" in the hidden field of id like: 
<input type="hidden" name="data[Respondent][id]" value="value of id"> 

そこにいない他の問題ならば、あなたのために正常に動作する必要がありますこと。

+0

これは簡単なハハです。どうもありがとうございました!本当にありがとうございました。私を助ける時間を過ごしてください:) – user2314339

+0

あなたは大歓迎です。 –

関連する問題