5

我正在尝试删除 Yii 中的一条记录,这会引发错误 400。请不要再次重复此请求。它正在检查 post 变量,我的控制器文件
if(Yii::app()->request->isPostRequest)

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

4 回答 4

15

发生这种情况是因为它不是发布请求。CHtml::link有一种方法可以使用 post 方法,而不是 get。这要求submitclientChangehtmlOptions.

有点像这样:

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?'
  )
);
于 2012-08-21T06:28:04.710 回答
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”,

于 2013-01-03T14:28:13.410 回答
1

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

于 2014-03-17T18:51:01.270 回答
0

I think your actionDelete() contains the code that throws this, and I guess it depends on AJAX call or not. Check your relevant actionDelete()

于 2012-08-21T06:11:52.867 回答