2015-07-23 2 views
1

У меня возникла проблема с удалением записей. Каждый раз, когда я нажимаю на кнопку удаления на странице управления, это вызывает «Ошибка 400. Ваш запрос является недействительным»Ошибка 400 в Yii

Ниже приведен метод удаления

public function actionDelete($id) 
    { 
     if(Yii::app()->request->isPostRequest){ 

      $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')); 
       } 

     } 
     else{ 
      throw new CHttpException(400,'Invalid request. Please do not repeat this request again.'); 
     } 

    } 

Что может быть не так с этим кодом?

+0

Попробуйте отключить проверку CSRF. http://www.yiiframework.com/doc-2.0/yii-web-controller.html#$enableCsrfValidation-detail – Konstantin

+0

Попробуйте * используя * проверку CSRF. http://www.yiiframework.com/doc-2.0/guide-security-best-practices.html#avoiding-csrf –

+0

Вы уверены, что выполняете запрос POST вместо запроса GET? –

ответ

1

Ваш метод удаления отвечает только на запрос POST. Убедитесь, что ваша кнопка настроена для отправки запроса POST контроллеру/действию

0

Если вы хотите удалить некоторые записи, используя Ajax delete, пожалуйста, следуйте инструкциям.

Это моя кнопка удаления и я поставил его Аяксу ссылку

эхо CHtml :: ajaxLink ('Delete', $ this-> createUrl ('/ контроллер/действие/идентификатор /'. 123), массив ('success' => 'rowdelete ('. 123. ')', 'type' => 'GET'), array ('confirm' => «Вы действительно хотите удалить.»));

теперь контроллер действия по умолчанию использование

общественная функция actionDelete ($ ID) { $ this-> loadModel ($ ID) -> Удалить();

// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser 
    if (!isset($_GET['ajax'])){ 
     Yii::app()->user->setFlash('CityDel', 'City Deleted Successfully'); 
     $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin')); 
    } 
} 
0

Я смог решить проблему. Причина, по которой вы получаете «Ошибка 400. Недопустимый ваш запрос», при удалении - это когда вы подключили более одного плагина jquery. По умолчанию Yii регистрирует библиотеку jquery.

Вот файл

**<script type="text/javascript" src="<?php echo Yii::app()->theme->baseUrl; ?>/asset/js/lib/jquery-1.11.2.js"></script>** 

Избегайте добавления другого Jquery LIB.

Надеюсь, что это поможет кому-то еще.

0

Вам может понадобиться раскомментировать или удалить в контроллере линии, порожденную GII:

«PostOnly + удалить», // мы только разрешить удаление с помощью запроса POST