CakePHP delete()函数不起作用

时间:2010-06-10 19:29:14

标签: cakephp

我只是打开cakePHP(v1.3.2)。我在我的本地wamp服务器上设置它,似乎工作正常,除了delete()函数不起作用。我正在完全按照他们的博客教程,它尽可能简单,所以我不明白为什么它不起作用。

继承我的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')); 
} 

“删除”链接的网址看起来像 http://localhost/posts/delete/id:1(其中id号与特定帖子匹配,显然)。它重定向并设置了flash消息,但是消息中没有$ id的数字,并且帖子不会被删除。似乎正确的id是通过url传递的,但我认为它不会进入函数。

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

4 个答案:

答案 0 :(得分:2)

我会尝试http://localhost/posts/delete/1 .... 至少那是我以前在CakePHP工作时记住的URL“形状”。 但那是不久前......

干杯, 詹卢卡。

答案 1 :(得分:1)

想出来,网址生成不当。 这是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不应该是key =&gt;值对'id' => $post['Post']['id'],而只是值$post['Post']['id']

答案 2 :(得分:0)

Gianluca是对的,函数中的参数匹配来自url的传递的args。例如:

如果您有这样的事情:

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

如果你的网址是http://localhost/post/myaction/1/2,那么在函数$ param1 = 1和$ param2 = 2 你可以传递任意数量的参数。

CakePHP样式中的

链接应该如你所指出的那样:

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

如果你想访问id:1,那么你需要从

获取它
$this->params['named']['id']

来自控制器。

HTH

答案 3 :(得分:0)

你在模型中有覆盖function beforeDelete()吗?如果是,则此功能必须为return true;