Obtener parámetros de filtrados para un reporte

Buen día a todos,

Necesito obtener los datos de filtrado de un Gridview para hacer un reporte. Actualmente lo hago enviando al view el searchModel y creo el botón fijando los parámetros que el modelo de búsqueda tiene en la ruta del link de manera que se envien como parámetros a la acción que me crea el pdf. pero no estoy seguro de que sea la mejor manera y tampoco estoy contento con eso XD pero si funciona. El código:

view :





Html::a('Pdf', ['pdf', 'ModelSearch' => [ 

    'dato1' => $searchModel['dato1'],

    'dato2' => $searchModel['dato2'], 

    'dato3' => $searchModel['dato3'],

]], ['class' => 'btn btn-primary'])



Alguno me podría indicar alguna manera de hacerlo que sea más correcta. o la forma obvia que no me fijé XD

gracias por su tiempo.

buenos días bushi lo que podrías hacer es guardar en una variable de session el filtro y utilizarlo en la vista donde lo vas a renderizar…

En tu model




$_SESSION['datos_filtrados'] = new CActiveDataProvider($this, array(

			'criteria'=>$criteria,

			'sort'=>$sort,

			'pagination'=>false,

		));



y lo utilizas en tu view

mmm me parece bien creo que es más elegante que pasar todos los parámetros a la vista :D gracias.

[b]Hola como estas, me surgió una pregunta, esta es la forma de pasar el conjunto de resultados del filtrado o solo pasa los valores por el cual se filtraran?

Yo necesitaría tomar los datos q se eligió en el filtro y guardarlos en variables para luego llamar a cristal reports y enviarles estos parametros, por ejemplo mi tabla tiene varios campos entre ellos Año, Mes , y el operador elige en el filtro año=2015 , mes=agosto. Como puedo obtener los valores q eligió en los filtros? gracias[/b]

Hola muy buenos dias, esta allí lo que hacemos es pasar los parámetros de filtrado. (pasar el resultado podria ser muy costoso si son muchos registros :blink: ). luego con esos parámetros se puede crear el ActiveDataProvider para realizar el reporte

gracias por tu respuesta y perdon por la siguiente burrada, pero necesitar hacer algo asi:

$variable_anio=$_SESSION[‘datos_filtrados.anio’]

$variable_mes=$_SESSION[‘datos_filtrados.mes’]

se q esta horriblemente mal, pero es para darme a entender, como saco de datos_filtrados los valores de filtro, tendras un ejemplo? gracias

bueno en este caso esteban está guardando el objeto CActiveDataProvider y podria obtenerlo luego haciendo lo siguiente en yii2:


$session = Yii::$app->session;


// obtener la variable. las dos formas son iguales:

$dataProvider = $session->get('datos_filtrados');

$dataProvider = $session['datos_filtrados'];

pero para que estes más claro lee esto Guia session y cookies ;)