Filtros en barra horizontal superior¶
Referencia: http://yii2enespanol.com/2016/02/
en seccion required del composer
“kartik-v/yii2-date-range”: “dev-master”
en models/comprasSearch.php
Allí, deberemos agregar una nueva propiedad pública:
$public $rango_fecha;
Estamos declarando la variable que contendrá el rango de fechas a partir del cual realizaremos la búsqueda. Recordemos, que para que este nuevo atributo pueda ser usado en las búsquedas, debemos declararlo como “safe”.
public function rules() [['descripcion', 'fecha_factura', 'fecha_recepcion', 'imputacion_compra', 'comprobante', 'modo_pago', 'rango_fecha', 'fecha_desde', 'fecha_hasta'], 'safe'],
en /views/compras/index.php
use kartik\daterange\DateRangePicker;
[ 'attribute' => 'rango_fecha', 'value' => 'fecha', 'format'=>'raw', 'options' => ['style' => 'width: 25%;'], 'filter' => DateRangePicker::widget([ 'model' => $searchModel, 'attribute' => 'rango_fecha', 'useWithAddon'=>false, 'convertFormat'=>true, 'pluginOptions'=>[ 'locale'=>['format'=>'Y-m-d'] ], ]) ],
Estos atributos, ya cumplen su propósito de realizar el filtrado, gracias a las siguientes líneas que ya están presentes en nuestro método: $query->andFilterWhere(['>=', 'fecha', $this->fecha_desde]); $query->andFilterWhere(['<=', 'fecha', $this->fecha_hasta]); Lo único que resta hacer, entonces, es agregar arriba de esas líneas la lógica para asignar las partes de rango_fecha a fecha_desde y fecha_ hasta. Hagámoslo de la siguiente manera: if (isset($this->rango_fecha) && !empty($this->rango_fecha)) { list($this->fecha_desde, $this->fecha_hasta) = explode(' - ', $this->rango_fecha);} Si ahora seleccionamos un rango de fechas, veremos que el filtro funciona perfectamente. Como estamos asignando valores a fecha_desde y fecha_hasta, dichos valores estarán visibles en el formulario _search.