Lo que necesito es que en mi gridview tenga un checkbox le cual me permita selecionar todos los datos de mi gridview adicional a esto tener un boto el cual me permita actualizar los datos selecionados el boton deben permitir actulizar el estado de 0 a 1 (tengo un campo tipo boolean, utilizo Yii2
Hola nan_do9 para tu petición usa ajax, para modificar los estado de 0 a 1 pero antes debemos de solucionar poner un checkbox en tu grid, fácil de esta forma:
//Dentro de columns en CGridView
array(
'header'=>'TITULO DEL HEADER',
'value' => 'CHtml::checkBox("Prueba[id]", $data->idPK, array("value"=>$data->id))',
'htmlOptions'=>array() // aqui tomalo como las propiedades que puedes poner como html, css, class, style, width etc. etc.
),
Si gusta entender mas esto, te dejo los links donde se habla al respecto, tanto la manera de arriba como esta las puedes aplicar y puedes realizar lo que pretendes, recuerda que en value si hay un valor aparecerá checkeado sino aparecerá el check null, solo es como tu indiques tus validaciones.
El ejemplo que muestras mantiene los resultados al pasar entre páginas añadiendo los id seleccionados al get, aquí tendrías que hacer algo similar. Si no lo haces solo se envían los id de los checkbox de la página que estas visualizando.
Hola rahif, sobre tu comentario no eh manejado yii2 pienso migrar el siguiente año, pero ya se quito la opción de poner las propiedades directas?, ejemplo en el código antes era de esta forma
ANTES
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'prueba'
'dataProvider' => $model->search(),
'columns' => [
array(
'name'=>'codigo'
'value'=>'AQUI VA TODO LO QUE YO QUISIERA PONER, CHECK, DROPBOX, TEXTBOX, etc'
)
));
con todos sus comentarios e solucionado el problema de esta manera
en mi controlador
public function actionUpdateall(){
$selection=(array)Yii::$app->request->post('selection');//typecasting
foreach($selection as $codigo){
$model=Usuario::findOne((int)$codigo);
if($model->estado==0){
$model->estado=1;
$model->save();
}
}