错误400无效请求YII用于删除记录

时间:2012-08-21 05:29:40

标签: post yii delete-row

我正在尝试删除Yii中的记录,该记录会引发错误400.请不要再次重复此请求。它正在检查一个post变量,我的控制器文件有if(Yii::app()->request->isPostRequest)当我回显我的post变量时它是空白而$ _GET有我要删除的id,我的View文件看起来像,

echo CHtml::link(CHtml::encode('Delete image'), array('image/delete', 'id'=>$image->id), array('class' => 'delete','confirm'=>'This will remove the image. Are you sure?'));

访问规则已删除已通过身份验证的用户,这是正确的。也试了一下*。 我也尝试将其作为隐藏变量发送,但没有好处。

无法弄明如何在Yii中发布表单。

4 个答案:

答案 0 :(得分:15)

这种情况正在发生,因为它不是一个帖子请求。 CHtml::link有一种方法可以使用post方法,而不是get。这要求您在submit中使用clientChangehtmlOptions属性。

有点像这样:

echo CHtml::link(CHtml::encode('Delete image'), array('image/delete', 'id'=>$image->id),
  array(
    'submit'=>array('image/delete', 'id'=>$image->id),
    'class' => 'delete','confirm'=>'This will remove the image. Are you sure?'
  )
);

答案 1 :(得分:10)

Curd的默认值将是这样的

/**
 * @return array action filters
 */
public function filters()
{
    return array(
        'accessControl', // perform access control for CRUD operations
        'postOnly + delete', // we only allow deletion via POST request
    );
}

删除操作只能通过POST访问;你可以查一下。

所以你需要删除这一行才能与你合作 'postOnly + delete',

答案 2 :(得分:1)

根据我的经验,这是由jquery之后加载的一些javascript文件引起的。 如果您在文档末尾有jQuery链接,请将其删除。

答案 3 :(得分:0)

我认为你的actionDelete()包含抛出这个的代码,我想这取决于AJAX调用。检查相关的actionDelete()