通过 POST 删除模型时请求 YII 无效
Invalid Request YII when delete model via POST
我想通过 post 删除我的模型,但我总是收到无效请求
这是我的观点
<?php
echo CHtml::link(CHtml::encode('Delete image'), array('gambar/delete', 'id' => $data->id), array(
'submit' => array('data/delete', 'id' => $data->id),
'class' => 'delete', 'confirm' => 'This will remove the image. Are you sure?'
)
);
?>
这是我在 GambarController
中的操作
public function actionDelete() {
if (Yii::app()->request->isPostRequest) {
// we only allow deletion via POST request
$this->loadModel()->delete();
if (!isset($_GET['ajax']))
$this->redirect(array('index'));
}
else
throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
}
但是我总是得到Invalid Request,我看了一些论坛,但是我无法得到它。谁能帮帮我?
您正在使用 CHtml::link
,这将生成一个 html <a>
标签。当您单击 <a>
时,您的浏览器会向服务器发送 HTTP GET 请求(而非 POST 请求)。所以 if(Yii::app()->request->isPostRequest)
始终是 false
,因此您会看到 Invalid request 错误。您应该从操作中删除此条件。另外,$this->loadModel()->delete()
是无效的,因为 loadModel
得到一个 id 作为参数。所以 $this->loadModel($_GET['id'])->delete()
是正确的。
使用下面的代码
$this->loadModel(primarykey, 'TableName')->delete();
应该可以!
在大多数情况下你不能使用link(<a>
)到POST
。相反,像这样使用 <form>
<form action="<?php echo $this->createUrl('/gambar/delete/'.$model->id);?>" method="post">
<button
type="submit"
name="id"
value="<?php echo $model->id?>"
onclick="if (!confirm('Are you sure to delete this image?')) return false;">
<i class="icon-white icon-trash"></i> Delete
</button>
</form>
我想通过 post 删除我的模型,但我总是收到无效请求 这是我的观点
<?php
echo CHtml::link(CHtml::encode('Delete image'), array('gambar/delete', 'id' => $data->id), array(
'submit' => array('data/delete', 'id' => $data->id),
'class' => 'delete', 'confirm' => 'This will remove the image. Are you sure?'
)
);
?>
这是我在 GambarController
public function actionDelete() {
if (Yii::app()->request->isPostRequest) {
// we only allow deletion via POST request
$this->loadModel()->delete();
if (!isset($_GET['ajax']))
$this->redirect(array('index'));
}
else
throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
}
但是我总是得到Invalid Request,我看了一些论坛,但是我无法得到它。谁能帮帮我?
您正在使用 CHtml::link
,这将生成一个 html <a>
标签。当您单击 <a>
时,您的浏览器会向服务器发送 HTTP GET 请求(而非 POST 请求)。所以 if(Yii::app()->request->isPostRequest)
始终是 false
,因此您会看到 Invalid request 错误。您应该从操作中删除此条件。另外,$this->loadModel()->delete()
是无效的,因为 loadModel
得到一个 id 作为参数。所以 $this->loadModel($_GET['id'])->delete()
是正确的。
使用下面的代码
$this->loadModel(primarykey, 'TableName')->delete();
应该可以!
在大多数情况下你不能使用link(<a>
)到POST
。相反,像这样使用 <form>
<form action="<?php echo $this->createUrl('/gambar/delete/'.$model->id);?>" method="post">
<button
type="submit"
name="id"
value="<?php echo $model->id?>"
onclick="if (!confirm('Are you sure to delete this image?')) return false;">
<i class="icon-white icon-trash"></i> Delete
</button>
</form>