2012-03-01 8 views
0

これは常に発生するものではなく、エラーを再現しようとする私の努力は打撃を受けました。CakePHP - レコードを編集するときに重複が発生することがあります

基本的には、ユーザー、タイトル、本文、締め切り日があるジョブシステムがあります。場合によっては、ジョブの編集フォームから保存すると、同じジョブ(すべて同じ内容のもの)が新しいIDで複製されます。

誰かが似たようなエラーに遭遇したのだろうかと思っていました。すべてのヘルプは高く評価され

function edit($id = null) { 
     if (!$id && empty($this->data)) { 
      $this->Session->setFlash(__('Invalid job', true)); 
     } 
     if (!empty($this->data)) { 
      if ($this->Job->save($this->data)) { 
       $this->Session->setFlash(__('The job has been saved', true)); 
      } else { 
       $this->Session->setFlash(__('The job could not be saved. Please, try again.', true)); 
      } 
     } 
     if (empty($this->data)) { 
      $this->data = $this->Job->read(null, $id); 
     } 
     $users = $this->Job->User->find('list', array('fields' => array('User.username'))); 
     $clients = $this->Job->Client->find('list'); 
     $stages = $this->Job->Stage->find('list'); 
     $this->set(compact('users', 'clients', 'stages')); 
    } 

は、ここに私のジョブコントローラの編集機能です。

+0

あなたが重複言うとき、あなたは右の新しいエントリの両方を保存したり、右のエントリが更新されていないと、重複が代わりに作成されていることをされていることを意味するのですか? –

+0

レコードのIDは常に$ this-> dataにありますか? – mark

+0

@ G.J正しいです。以下の答えは頭の爪に当たった! –

答えて

2

あなたのフォームにはおそらくこのジョブのIDはありません。ビューのフォームでこれを持っていることを確認してください:

echo $this->Form->input('id'); 
+0

ありがとう、これはまさに正しいことです。 IDの編集を拒否する目的でIDを取り出しました。今私はそれを隠されたdivにラップします。それは簡単です。 –

+0

デフォルトでは、フォームに作成するID入力には 'type =" hidden "が付きます。それは起こらなかった? –

+0

正直言って、私はそれをテストする前に、私はフォームに変更を加えたので、チャンスは、私はそれを削除する前にこれを逃した。ご協力いただきありがとうございます! –

関連する問題