【问题标题】:CakePHP - Issue with Deleting Data via a LinkCakePHP - 通过链接删除数据的问题
【发布时间】:2013-03-29 04:57:32
【问题描述】:

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

在我看来,我有这个代码sn-p,它实际上是一个表中的一列。对于“删除”这个词,我希望它是一个图像(使用 $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'));
        }
    }

我收到以下错误。似乎用 post 包装表单标签是行不通的。在 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>   

【问题讨论】:

    标签: cakephp


    【解决方案1】:

    错误:

    错误基本上是说“嘿,没有 Post 对象这样的东西,所以我们不确定如何处理您尝试访问的这个“删除”方法”(换句话说,@ 987654322@ 模型尚未加载)

    进一步解释/解决方案:

    除了您当前所在的控制器之外,您天生无法访问模型。

    所以在你的情况下,你不能直接访问 Post 模型而不加载它:

    $this->loadModel('Post');
    $this->Post->delete($id);
    

    或者,如果它与当前模型相关联(例如Activity),您可以通过以下方式访问它:

    $this->Activity->Post->delete($id);
    

    【讨论】:

    • 根据问题中的信息,我的猜测是OP试图删除Activity本身,所以应该是$this-&gt;Activity-&gt;delete($id);
    • @thaJeztah - 这是可能的,但该项目的 id 是 'post_515496f40ca77',他的代码是 $this-&gt;Post-&gt;delete(),所以......不确定。无论哪种方式,这都解释了错误,如果他想要 Activity,它应该指出他正确的需求变化。
    • 我迟早要回到这个问题上。谢谢你的cmets。这个问题一直盯着我看。可怕的复制/粘贴错误。是的,我应该在我的控制器中有“活动”而不是“发布”。一旦我做出改变,它就起作用了。现在我只需要弄清楚如何显示图像而不是文本(让用户点击链接)。
    猜你喜欢
    • 2019-04-22
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    相关资源
    最近更新 更多