我需要批量删除我的网格。我有jquery脚本
$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 :(得分:1)
你似乎有令人困惑的代码。您的代码正在向服务器发出get
请求,但是您的操作(而不是您发送请求的操作)正在检查post
个参数!您需要弄清楚您正在进行的请求,并相应地检查值。这有两种情况;
案例1
您将ajax调用保留为get
请求,因此您的代码是
$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');
}
但要执行此操作,您需要更改原始javascript代码才能发出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
请求不同,您的代码需要在使用方式上保持一致!