CakePHP - 通过链接删除数据的问题

时间:2013-03-28 20:43:59

标签: cakephp

我正在使用cakephp 2.3.0。 我要做的是让用户单击一个链接(以图像的形式),用户操作将从该数据库中删除该用户的一些数据。

在我看来,我有这段代码片段,它实际上是表格中的一列。对于“删除”这个词,我希望它是一个图像(使用$ this-> Html-> image()),但是cakephp抱怨这一点。根据API,该参数只能是一个字符串。

$this->Form->postLink(
                'delete', 
                array('action' => 'deleteActivity', $myActivity['Activity']['id']),
                array('confirm' => 'Are you sure?')),

这是我在我的控制器中的功能,我正在尝试:

public function deleteActivity($id) {

        if ($this->Post->delete($id)) {             
            $this->Session->setFlash('The activity with id: ' . $id . ' has been deleted.');
            $this->redirect(array('action' => 'landingPage'));
        }
    }

我收到以下错误。看来包装带有帖子的表单标签不起作用。我正在尝试在CakePHP中做最好的练习方式吗?

致命错误

错误:在非对象上调用成员函数delete()

以下是生成的HTML:

<td><form action="/activities/index.php/activities/deleteActivity/4"      name="post_515496f40ca77" id="post_515496f40ca77" style="display:none;" method="post">    <input type="hidden" name="_method" value="POST"/></form><a href="#" onclick="if (confirm(&#039;Are you sure?&#039;)) { document.post_515496f40ca77.submit(); } event.returnValue = false; return false;">delete</a></td>   

1 个答案:

答案 0 :(得分:3)

错误:

错误主要是说“嘿,没有Post对象这样的东西,所以我们不确定如何处理你试图访问的'删除'方法”(换句话说,尚未加载Post模型)

进一步说明/解决方案:

您本身并不能访问您当前所在的控制器以外的模型。

因此,在您的情况下,如果不加载Post模型,则无法直接访问$this->loadModel('Post'); $this->Post->delete($id); 模型:

Activity

或者,如果它与当前模型相关联(例如$this->Activity->Post->delete($id); ),您可以通过以下方式访问它:

{{1}}