У меня есть следующий код в моем контроллере для удаления файлов:
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%). Тем не менее, это не слово для удаления файлов. Если я удаляю этот код, он начинает работать. Как я могу исправить эту ошибку?
Сначала добавьте приведенный ниже код в ваш контроллер сверху и проверьте, является ли запрос POST или GET
if(Yii::app()->request->isPostRequest())
echo "POST";
else
echo "NOT POST";
если вывод «НЕ ПОЧТА», то
Проверьте filters () в вашем контроллере и посмотрите, разрешено ли удаление только через POST-запрос.
фильтры публичных функций () { возвращаемый массив ( 'accessControl', // выполнить контроль доступа для операций CRUD 'postOnly + delete', // мы разрешаем удаление только через POST-запрос ); }
‘postOnly + delete’, -> прокомментируйте эту строку.
разрешить удаление через запрос GET.
Альтернативное (более безопасное и лучшее) решение заключается в том, что вы используете POST
способ передать id в контроллер.
Попробуйте заменить
$this->loadModel($id)->delete();
с
$this->findModel($id)->delete();
Конечно, вам нужен метод findModel ($ id) в контроллере