2011-07-22 43 views
0

我正在面對結構中id字段的問題。在CakePHP中進行編輯時URL中的「id」字段出現問題

我有6個字段的用戶,所有通過模型驗證爲'非空'。在編輯一個用戶時,我把一個隱藏的字段。

在提交表單時,自然會給我錯誤(來自模型),說'非空'。在沒有輸入任何內容的情況下,我再次點擊提交,現在我面臨這個問題。

這次發生的事情是,url中的'id'字段現在不存在,http://localhost/bekzcart/admin/users/edit),並且數據庫中有一個新條目(理想情況下它應該更新)。

什麼可能是錯誤?

我的用戶控制器:

class UsersController extends AppController { 
    var $name = 'Users'; 

    function admin_edit($id) { 
     $this->User->id = $id; 
     $userLevels = $this->User->Level->find('list', array('fields' => array('LEVEL_ID', 'lEVEL_NAME'))); 
     $this->set('levels', $userLevels); 

     if (empty($this->data)) { 
      $this->data = $this->User->read(); 
     } else { 
      $this->User->set($this->data); 

      if ($this->User->validates(array('fieldList' => array('USER_LOGIN', 'USER_NAME', 'USER_EMAIL', 'USER_ADDRESS', 'USER_PHONE')))) { 
       $this->data['User']['USER_MODIFIED'] = DboSource::expression('NOW()'); 

       if ($this->User->save($this->data)) { 
        $this->Session->setFlash(__('Edit User Success.', true)); 
       } else { 
        $this->Session->setFlash(__('Something wrong with the query', true));  
       } 
      }  
     }     
    } 
} 

用戶模型:

class User extends AppModel { 
    var $name = 'User'; 
    var $primaryKey = 'USER_ID'; 

    // Validation in here 
    // Association in here 
} 

我的相關觀點:admin_edit.ctp

$this->Form->input('id', array('type' => 'hidden')) // The Hidden Id Not Work 

多對多感謝提前,

regrad

Brian ...

+0

您可以鍵入了三頁的代碼,但必須縮寫「謝謝」? :-S –

+0

hohoho對不起。和平\^- ^/ – brian

+0

呵呵,歡呼聲。然而,嚴肅地說,這是一大堆代碼可供篩選。一般來說,如果將問題歸結爲一個最小代碼示例,可以顯示問題而不會讓讀者陷入不必要的實現細節,那麼您會發現更多的關注點。 –

回答

0

領域id必須由相關表所使用的主鍵所取代,在這種情況下是USER_ID

$this->Form->input('USER_ID', array('type' => 'hidden')) 
0

您使用的是什麼版本的蛋糕?更新到最新版本,echo $this->Form->input('id');將自動隱藏。

,並張貼了完整的代碼生成的形式,輸出形式應該是這樣的:

<form id="AdminUserEditForm" accept-charset="utf-8" action="/admin/users/edit/1" method="post"> 

一個建議:增加「創造」和「修改」字段給用戶表(類型日期時間)。蛋糕會跟蹤你的這些領域。

+0

我的蛋糕版本是1.3,現在我解決了這個問題。字段'id'必須是表使用的主鍵。我用'USER_ID'改變'id',現在一切都很好。感謝您的回覆 – brian

相關問題