2012-11-26 77 views
2

我有一個模型的組和另一個模型的註釋(註釋和帖子是相同的東西)。CakePHP重定向回到同一頁

NotesController:

public function groupnotes() 
    { 

    if (!empty($this->data)) 
    { 
     $data = $this->data; 
     $data['Note']['user_id'] = $this->Auth->user('id'); 

     if ($this->Note->save($data)) 
      { 
      PROBLEM HERE 
      } 
     } 


    if(empty($this->data['Note']['notes'])) 
     { 
     PROBLEM HERE 
     } 

GroupsController:(ViewCourse用於查看每個組)

public function viewcourse($id=NULL) 
{ 
    $this->set('viewcourse', $this->Group->read(NULL,$id)); 
    $this->set('course', $this->Group->find('all', array('conditions'=>array('Group.id'=>$id)))); 

} 

現在,當我創建一個組在後重定向我 「groupnotes」 行動和我希望它重定向到viewcourse /編號...我有點困惑,我怎麼能重定向頁面viewcourse /編號...

我試圖通過將此添加到groupnotes動作

$this->redirect(array('controller'=>'groups', 'action' => 'viewcourse')); 

但在這裏我沒有ID。

你有什麼建議?

回答

4

這個問題可以幫助你:What is the equivalent to getLastInsertId() in Cakephp?

$this->redirect(array(
      'controller'=>'groups', 
      'action' => 'viewcourse/'.$this->Group->getLastInsertId()) 
      ); 

編輯: 我只建議你去組作爲建議的最後插入的ID。當你說「但這裏我沒有身份證」時,你的問題有點含糊。 1.你是否想要去任何有效的課程ID? 2.最後輸入的過程? 3.先輸入課程編號?

另外,您可以在您的控制器像這樣設置默認套餐...

public function viewcourse($id=NULL) 
{ 
    if(!$id){ 
     $id = $this->Group->find('first'); 
     $id = $id['Group']['id']; 
    } 
    $this->set('viewcourse', $this->Group->read(NULL,$id)); 
    $this->set('course', $this->Group->find('all', array('conditions'=>array('Group.id'=>$id)))); 

} 

注意:只是一個提示,

$this->set('course', $this->Group->find('all', array('conditions'=>array('Group.id'=>$id)))); 

可與

$this->set('course', $this->Group->findById($id)); 

被取代讓您的代碼更加精簡

+0

我們不能在NoteController中添加它,因爲它需要的模型是Group,其次我們希望將它重定向到組等視圖等等ID沒有notesview所以使用getLastInsertId()將採取在表中最後插入註釋的ID。 –

+0

如果你的模型安裝正確,你應該可以使用$ this-> Note-> Group-> getLastInsertID()來訪問你想要的數據。反之亦然...取決於你的模型關聯。 –

+0

a)如您所述,find(all)應該是find(first)或findById()。找到(所有)與一個預期的結果沒有任何意義:) b)$ this-> Note-> id通常比使用getLastInsertId() – mark