2015-12-25 2 views
0

Мне нужна массовая очистка для моей сетки. У меня есть сценарий jqueryYii2 дополнительный параметр ajax в контроллере

$activeMassScriptJS= <<<JS 
    $(document).ready(function(){ 
    $("button.product-update").on('click',function(e){ 
      e.preventDefault; 
      var keys = $('#products-grid').yiiGridView('getSelectedRows'); 
      $.get('mass-status-movie', {keylist : keys}, function(data) { alert(keys[0]);}); 
      return false; 
    }); 
}); 

JS;

контроллер

public function actionMassdelete(){ 
    if (Yii::$app->request->post('keylist')) { 
     $keys = Yii::$app->request->post('keylist'); 
     foreach ($keys as $key) { 
      $model = Product::findOne($key); 
      $model->delete(); 
     } 
    } 
    return $this->redirect(Url::previous()); 
} 

он работает адрес .../фильм/индекс, но мне нужно работать для адреса/кино/индекс? Параметр = значение как это сделать?

+0

Я не могу понять вашу ситуацию. Как я понял, ваш JS работает в '/ movie/index', и вам нужно отправить GET-запрос в'/movie/index? Parameter = value', правильно? Но у вас есть еще один URI в вашем скрипте: '$ .get ('mass-status-movie'' ... И действие предоставлено'/something/massdelete' ... –

+0

Да, мне нужно отправить запрос на получение. удалите все элементы из сетки. – Demolog

+0

Ну, вы отправляете запрос не на действие, которое вы предоставили. –

ответ

0

У вас, кажется, запутанный код. Ваш код делает запрос get на сервер, но тогда ваше действие, которое не является тем, с которым вы отправили запрос, проверяет параметры post! Вам нужно разобраться, какие запросы вы делаете, и проверить значения соответственно. Вот два сценария;

Случай 1 Вы держите Аякс вызов как get запроса, поэтому YOR код

$activeMassScriptJS= <<<JS 
$(document).ready(function(){ 
$("button.product-update").on('click',function(e){ 
    e.preventDefault; 
    var keys = $('#products-grid').yiiGridView('getSelectedRows'); 
    $.get('mass-status-movie', {keylist : keys}, function(data) { alert(keys[0]);}); 
    return false; 
    }); 
}); 

Значение, которые вы отправили через get запроса теперь будут доступны в двух направлениях. При действии, на которое вы указали, т. Е. actionMassStatusMovie(), вы можете получить к ним доступ таким образом;

public function actionMassStatusMovie($keyList){ 
    //Your code here 
} 

Вы могли бы использовать это, если вы всегда хотели параметр keyList присутствовать.

Вы также можете получить доступ к параметрам get в любом месте вашего скрипта, например, Yii::$app->request->get('keylist'). В этом случае вам не нужен параметр $ KeyList, так что вы можете просто использовать

public function actionMassStatusMovie(){ 
     $keyList = Yii::$app->request->get('keylist'); 
    } 

Случай 2

В качестве альтернативы, вы можете отправить данные через post запрос. В этом случае, вы не используете этот параметр, просто проверить его, как вы делали,

public function actionMassStatusMovie(){ 
     $keyList = Yii::$app->request->post('keylist'); 
    } 

Но чтобы сделать это, вам нужно изменить исходный код яваскрипта сделать post запрос.

$activeMassScriptJS= <<<JS 
    $(document).ready(function(){ 
    $("button.product-update").on('click',function(e){ 
      e.preventDefault; 
      var keys = $('#products-grid').yiiGridView('getSelectedRows'); 
      $.post('mass-status-movie', {keylist : keys}, function(data) { alert(keys[0]);}); 
      return false; 
    }); 
}); 

get и post запросы разные, и ваш код должен быть последовательным в том, как они используются!

Смежные вопросы