通过POST删除模型时,请求YII无效

时间:2015-05-21 11:42:48

标签: yii

我想通过帖子删除我的模型,但我总是得到无效的请求 这是我的看法

View

这是我在requestLayout()

中的行动
<?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?'
            )
    );
    ?>

但我总是得到无效请求,我已经阅读了一些论坛,但我无法得到它。有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:0)

您正在使用CHtml::link,这会生成一个html <a>标记。当您点击<a>时,您的浏览器会向服务器发送 HTTP GET请求(非POST请求)。因此,if(Yii::app()->request->isPostRequest)始终为false,因此您会看到无效的请求错误。您应该从操作中删除此条件。此外,$this->loadModel()->delete()无效,因为loadModel获取id作为参数。所以$this->loadModel($_GET['id'])->delete()是正确的。

答案 1 :(得分:0)

使用以下代码

$this->loadModel(primarykey, 'TableName')->delete();

应该工作!

答案 2 :(得分:0)

在大多数情况下,您无法使用链接(<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>