我的控制器中有以下代码可以删除文件:
public function actionDelete($id)
{
$current_user_id=Yii::app()->user->id;
$condition = 'user_id=:user_id';
$params = array(':user_id' => $current_user_id);
$idExists = UserGroup::model()->exists($condition,$params);
if($idExists){
$list = UserGroup::model()->find($current_user_id);
$getgroup= $list->user_group_id;
$getgroupright=UserRights::model()->find($getgroup);
$getuserRule=$getgroupright->user_rule_id;
$getuserprivilege=$getgroupright->user_privilege_id;
if($getuserprivilege=='1' and $getuserRule=='3'){
$this->loadModel($id)->delete();
// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
if (!isset($_GET['ajax']))
$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
}
}
}
代码if($getuserprivilege=='1' and $getuserRule=='3'){
适用于按ID(100%)查看文件。但是,它没有说删除文件。如果我删除此代码,它将开始工作。我该如何解决这个错误?
答案 0 :(得分:0)
首先在控制器顶部添加以下代码,然后检查请求是POST还是GET
if(Yii::app()->request->isPostRequest())
echo "POST";
else
echo "NOT POST";
如果输出是“NOT POST”,那么
检查控制器中的过滤器(),看看是否只允许通过POST请求删除。
public function filters() { return array( 'accessControl', // perform access control for CRUD operations 'postOnly + delete', // we only allow deletion via POST request ); }
'postOnly + delete', - >评论这一行。
允许通过GET请求删除。
替代(更安全和更好)的解决方案是您使用POST 将'id'传递给控制器的方法。
答案 1 :(得分:-1)
尝试替换
$this->loadModel($id)->delete();
与
$this->findModel($id)->delete();
当然,你需要在控制器中使用findModel($ id)方法