2010-06-10 34 views
0

我只是打開CakePHP(v1.3.2)。我在我的本地wamp服務器上設置它,似乎工作正常,但delete()函數不起作用。我正在按照他們的博客教程,它儘可能簡單,所以我不明白爲什麼它不工作。CakePHP刪除()函數不工作

繼承人在我的PostsController類的功能:

function delete($id = NULL) {  
    $this->Post->delete($id);  
    $this->Session->setFlash('The post with id: '.$id.' has been deleted.'); 

    $this->redirect(array('action'=>'index')); 
} 

「刪除」鏈接的URL看起來像 http://localhost/posts/delete/id:1(其中身份證號碼的特定職位相匹配,很明顯)。它重定向並設置了Flash消息,但是消息中沒有$ id,並且該消息不會被刪除。它似乎正確的身份證通過網址,但我不認爲它正在進入功能。

我不明白。有任何想法嗎???

回答

2

我會嘗試http://localhost/posts/delete/1 .... 至少這是我在CakePHP中工作時記得的URL「形狀」。 但是那是前一陣子...

乾杯, Gianluca。

1

想通了,url生成不正確。 這是CakePHP教程中的一個錯誤。

這是他們建議你創建一個鏈接刪除帖子:

<?php echo $html->link('Delete', array('action' => 'delete', 'id' => $post['Post']['id']), null, 'Are you sure?');?> 

它應該是:

<?php echo $html->link('Delete', array('action' => 'delete', $post['Post']['id']), null, 'Are you sure?');?> 

發現其中的差別:在URL參數標識不應該鍵值=>值對'id' => $post['Post']['id'],但只是值$post['Post']['id']

+0

即時通訊也經歷了這個例子。當我按刪除它的作品,我收到一條消息說它已刪除,但它並沒有真正從數據庫中刪除。你能記得這是否應該發生?謝謝 – Jonathan 2011-10-14 17:54:48

0

Gianluca是正確的,函數中的參數匹配從URL傳遞的參數。例如:

,如果你有這樣的事情:

function my_action($param1=null, $param2=null){ 
    ... 
} 

如果您的網址是http://localhost/post/myaction/1/2然後在功能$參數1 = 1和$參數2 = 2 只要你想你可以把儘可能多的參數。在CakePHP的風格

鏈接應該爲你指出:

<?php echo $html->link('Delete', array('action' => 'my_action', $param1, $param2)...);?> 

如果你想訪問ID:1,那麼你需要從控制器從

$this->params['named']['id'] 

得到它。

HTH

0

你有沒有在模型覆蓋function beforeDelete()?如果是,這個功能必須是return true;