Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii框架-使用CCheckBoxColumn删除多个_Php_Yii_Checkboxlist - Fatal编程技术网

Php Yii框架-使用CCheckBoxColumn删除多个

Php Yii框架-使用CCheckBoxColumn删除多个,php,yii,checkboxlist,Php,Yii,Checkboxlist,我现在只是想了解一下yii框架,我创建了一个函数,可以一次删除多个数据库记录。在视图中,我有一个网格,每个项目都有一个引用,旁边有一个复选框 <?php $this->widget('zii.widgets.grid.CGridView', array( 'dataProvider'=>$dataProvider, 'htmlOptions'=>array( 'class'=>'' ), 'columns'=>a

我现在只是想了解一下yii框架,我创建了一个函数,可以一次删除多个数据库记录。在视图中,我有一个网格,每个项目都有一个引用,旁边有一个复选框

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'htmlOptions'=>array(
        'class'=>''
    ),
    'columns'=>array(
...
array(
    'class'=>'CLinkColumn',
    'header'=>'Handle',
    'labelExpression'=>'$data->handle',
    'urlExpression'=>'Yii::app()->createUrl(".../item/view", array("id"=>$data->id))',
        ),
array(
    'class'=>'CCheckBoxColumn',
    'header'=>'Select',
    'selectableRows'=>'2',
        ),
    ),
正如我以前调用的那样,将项传递给view函数。如果有人能帮忙,我们将不胜感激

编辑:

视图:

控制器:

public function actionBulkDelete()
{

    if(isset($_POST['id'])&& !empty($_POST['id'])) 
    { 
        Yii::app()->user->setFlash('success', 'Delete Items');
            $this->redirect(array('.../item/index'));
    } 
    else
    {
        Yii::app()->user->setFlash('success', 'No Items Selected');
            $this->redirect(array('.../item/index'));
    }


}

将网格视图包装在表单中,并在
列中执行以下更改:

$form = $this->beginWidget('CActiveForm', array(
        'id' => 'some-grid-form',
        'action' => array('myController/myAction'),
));

 $this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'selectableRows' => 2,
    'columns'=>array(
     array(
            'id' => 'id',
            'class' => 'CCheckBoxColumn',
        ),
    //... rest of your columns
    ),
    array(
        'class'=>'CButtonColumn',
    ),
  ),
));

echo CHtml::SubmitButton('Multiple Delete');
$this->endWidget(); // end form
在控制器的
myAction
中:

public function actionmyAction()
    {
        if(isset($_POST['id']) && !empty($_POST['id'])) { //you'll get all the ids in an array
            //print_r($_POST['id']); 
            //your delete function here, also add a few validation here to authenticate deletion
            $ids = $_POST['id'];
            $criteria = new CDbCriteria;
            $criteria->addInCondition('id',$ids);
            MyModel::model()->deleteAll($criteria);
            //.... render with success flash message etc.
        }
    }

非常感谢你的帮助!这对我真的很有用!很抱歉,由于某些原因,
isset($\u POST['id])
总是返回false@AlecGamble您可以发布您的代码,只需将其附加到您现有的问题中吗?我已经发布了更新的代码,再次感谢您的帮助。@AlecGamble
'selectableRows'=>'2',
应该在
列之外,请检查我的答案<代码>'class'=>'CCheckBoxColumn',
您必须传递
id
(检查我的答案)才能获得要在控制器操作中删除的id。
public function actionBulkDelete()
{

    if(isset($_POST['id'])&& !empty($_POST['id'])) 
    { 
        Yii::app()->user->setFlash('success', 'Delete Items');
            $this->redirect(array('.../item/index'));
    } 
    else
    {
        Yii::app()->user->setFlash('success', 'No Items Selected');
            $this->redirect(array('.../item/index'));
    }


}
$form = $this->beginWidget('CActiveForm', array(
        'id' => 'some-grid-form',
        'action' => array('myController/myAction'),
));

 $this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'selectableRows' => 2,
    'columns'=>array(
     array(
            'id' => 'id',
            'class' => 'CCheckBoxColumn',
        ),
    //... rest of your columns
    ),
    array(
        'class'=>'CButtonColumn',
    ),
  ),
));

echo CHtml::SubmitButton('Multiple Delete');
$this->endWidget(); // end form
public function actionmyAction()
    {
        if(isset($_POST['id']) && !empty($_POST['id'])) { //you'll get all the ids in an array
            //print_r($_POST['id']); 
            //your delete function here, also add a few validation here to authenticate deletion
            $ids = $_POST['id'];
            $criteria = new CDbCriteria;
            $criteria->addInCondition('id',$ids);
            MyModel::model()->deleteAll($criteria);
            //.... render with success flash message etc.
        }
    }