我正在尝试删除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中发布表单。
答案 0 :(得分:15)
这种情况正在发生,因为它不是一个帖子请求。 CHtml::link
有一种方法可以使用post方法,而不是get。这要求您在submit
中使用clientChange
的htmlOptions
属性。
有点像这样:
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()