2012-03-10 71 views
0

我一直在使用cakephp,並且已經能夠創建一些簡單的模型和關係。我一直在專門嘗試實施hasMany關聯。我的問題來自嘗試更新子項目。CakePHP字段沒有在編輯頁面上更新

就我的例子而言,我假定我有一個'Parent'和'Child'模型類。我能夠創建視圖並添加頁面而沒有任何問題。不過,我並沒有在編輯頁面上取得同樣的成功。在編輯頁面上,我可以同時顯示父字段和子字段。但是,當我去保存表單時,而不是更新子項,它只是添加現有的那些行。我不確定爲什麼會發生這種情況。我在某處丟失了一個參數嗎?

這是我的編輯頁面

echo $this->Form->create('Parent', array('action' => 'edit')); 
echo $this->Form->input('title'); 
echo $this->Form->input('body', array('rows' => '3')); 
echo $this->Form->input('id', array('type' => 'hidden')); 

$x = 0; 
foreach($this->request->data['Child'] as $child){ 
    print $this->Form->input("Child.$x.name"); 
    $x++; 
} 

代碼這是我ParentController編輯功能

public function edit($id = null) { 
    $this->Parent->id = $id; 
    if ($this->request->is('get')) { 
     $this->request->data = $this->Parent->read(); 
     } else { 
      if ($this->Parent->saveAll($this->request->data)) { 
       $this->Session->setFlash('Your post has been updated.'); 
       $this->redirect(array('action' => 'index')); 
      } else { 
       $this->Session->setFlash('Unable to update'); 
      } 
     } 
} 
+0

你看看你的源代碼,以確保表單動作/控制器/編輯/ ID,而不僅僅是/控制器/編輯?由於您假設id的默認值爲null,因此可能會發生這種情況。 – 2012-03-11 09:34:43

+0

在任何人跳過我的喉嚨,指出他有$ this-> data ['Parent'] ['id']作爲隱藏字段時,通過將$ this-> Parent-> id設置爲$ id,這將被忽略。如果$ id爲空,它將插入新行。 – 2012-03-11 09:36:35

回答