我正在使用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('Are you sure?')) { document.post_515496f40ca77.submit(); } event.returnValue = false; return false;">delete</a></td>
答案 0 :(得分:3)
错误:
错误主要是说“嘿,没有Post
对象这样的东西,所以我们不确定如何处理你试图访问的'删除'方法”(换句话说,尚未加载Post
模型)
进一步说明/解决方案:
您本身并不能访问您当前所在的控制器以外的模型。
因此,在您的情况下,如果不加载Post
模型,则无法直接访问$this->loadModel('Post');
$this->Post->delete($id);
模型:
Activity
或者,如果它与当前模型相关联(例如$this->Activity->Post->delete($id);
),您可以通过以下方式访问它:
{{1}}