Filtros

Versión 7 (Guillermo Zdanowicz, 22/03/2016 23:52)

1 1 Guillermo Zdanowicz
h1. Filtros
2 1 Guillermo Zdanowicz
3 7 Guillermo Zdanowicz
Referencia: http://yii2enespanol.com/2016/02/
4 7 Guillermo Zdanowicz
5 1 Guillermo Zdanowicz
en seccion required del composer
6 1 Guillermo Zdanowicz
7 1 Guillermo Zdanowicz
<pre>
8 1 Guillermo Zdanowicz
“kartik-v/yii2-date-range”: “dev-master”
9 1 Guillermo Zdanowicz
</pre>
10 2 Guillermo Zdanowicz
11 2 Guillermo Zdanowicz
12 2 Guillermo Zdanowicz
en models/comprasSearch.php
13 2 Guillermo Zdanowicz
14 4 Guillermo Zdanowicz
<pre>
15 4 Guillermo Zdanowicz
Allí, deberemos agregar una nueva propiedad pública:
16 5 Guillermo Zdanowicz
</pre>
17 5 Guillermo Zdanowicz
*$public $rango_fecha;*
18 5 Guillermo Zdanowicz
<pre>
19 4 Guillermo Zdanowicz
Estamos declarando la variable que contendrá el rango de fechas a partir del cual realizaremos la búsqueda.
20 4 Guillermo Zdanowicz
21 4 Guillermo Zdanowicz
Recordemos, que para que este nuevo atributo pueda ser usado en las búsquedas, debemos declararlo como “safe”.
22 4 Guillermo Zdanowicz
</pre>
23 3 Guillermo Zdanowicz
24 2 Guillermo Zdanowicz
<pre>
25 2 Guillermo Zdanowicz
    public function rules()
26 2 Guillermo Zdanowicz
27 2 Guillermo Zdanowicz
  [['descripcion', 'fecha_factura', 'fecha_recepcion', 'imputacion_compra', 'comprobante', 'modo_pago', 'rango_fecha', 'fecha_desde', 'fecha_hasta'], 'safe'],
28 2 Guillermo Zdanowicz
</pre>
29 2 Guillermo Zdanowicz
30 2 Guillermo Zdanowicz
en /views/compras/index.php
31 2 Guillermo Zdanowicz
32 2 Guillermo Zdanowicz
<pre>
33 2 Guillermo Zdanowicz
use kartik\daterange\DateRangePicker;
34 2 Guillermo Zdanowicz
35 2 Guillermo Zdanowicz
</pre>
36 2 Guillermo Zdanowicz
<pre>
37 2 Guillermo Zdanowicz
[
38 2 Guillermo Zdanowicz
            'attribute' => 'rango_fecha',
39 2 Guillermo Zdanowicz
            'value' => 'fecha',
40 2 Guillermo Zdanowicz
            'format'=>'raw',
41 2 Guillermo Zdanowicz
            'options' => ['style' => 'width: 25%;'],
42 2 Guillermo Zdanowicz
            'filter' => DateRangePicker::widget([
43 2 Guillermo Zdanowicz
                'model' => $searchModel,
44 2 Guillermo Zdanowicz
                'attribute' => 'rango_fecha',
45 2 Guillermo Zdanowicz
                'useWithAddon'=>false,
46 2 Guillermo Zdanowicz
                'convertFormat'=>true,
47 2 Guillermo Zdanowicz
                'pluginOptions'=>[
48 2 Guillermo Zdanowicz
                    'locale'=>['format'=>'Y-m-d']
49 2 Guillermo Zdanowicz
                ],
50 2 Guillermo Zdanowicz
            ])
51 2 Guillermo Zdanowicz
        ],
52 2 Guillermo Zdanowicz
</pre>
53 6 Guillermo Zdanowicz
54 6 Guillermo Zdanowicz
<pre>
55 6 Guillermo Zdanowicz
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:
56 6 Guillermo Zdanowicz
57 6 Guillermo Zdanowicz
$query->andFilterWhere(['>=', 'fecha', $this->fecha_desde]);
58 6 Guillermo Zdanowicz
$query->andFilterWhere(['<=', 'fecha', $this->fecha_hasta]);
59 6 Guillermo Zdanowicz
60 6 Guillermo Zdanowicz
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.
61 6 Guillermo Zdanowicz
62 6 Guillermo Zdanowicz
Hagámoslo de la siguiente manera:
63 6 Guillermo Zdanowicz
64 6 Guillermo Zdanowicz
65 6 Guillermo Zdanowicz
if (isset($this->rango_fecha) && !empty($this->rango_fecha)) {
66 6 Guillermo Zdanowicz
list($this->fecha_desde, $this->fecha_hasta) = explode(' - ', $this->rango_fecha);}
67 6 Guillermo Zdanowicz
68 6 Guillermo Zdanowicz
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.
69 6 Guillermo Zdanowicz
</pre>
Redmine Appliance - Powered by TurnKey Linux