Búsqueda entre fechas en Yii

| 2013-04-30 | 4 Comentarios »

En este tema les quiero mostrar como realizar búsqueda entre fechas en el GridView, en este caso voy a usar la tabla auditoria y el campo fecha_auditoria va a tener la opción para filtrar entre fechas.

335

Modelo Auditoria (Las modificaciones que se deben hacer en el modelo):


<?php
class Auditoria extends CActiveRecord
{
 public $date_first; //Agregar esta variable
 public $date_last; //Agregar esta variable

//Agregar date_first, date_last en el search en la función rules()

public function rules()
 {
 return array(
 array('fecha_auditoria', 'required'),
 array('usuario, modelo, accion', 'length', 'max'=>50),
 array('campo, camponuevovalor, campoviejovalor', 'safe'),
 array('date_first, date_last,id_auditoria, usuario, modelo, accion, fecha_auditoria, campo, camponuevovalor,campoviejovalor', 'safe', 'on'=>'search'),

);
 }

//Antes del return agregar lo siguiente en el search(), cabe recalcar que fecha_auditoria es el campo que utilizo en este ejemplo

public function search()
 {

//Esto es lo que se debe agregar

if((isset($this->date_first) && trim($this->date_first) != "") && (isset($this->date_last) && trim($this->date_last) != ""))
 $criteria->addBetweenCondition('fecha_auditoria', ''.$this->date_first.'', ''.$this->date_last.'');

return new CActiveDataProvider($this, array(
 'criteria'=>$criteria,
 ));
}

Vista auditoria/admin.php (Las modificaciones que se deben hacer en la vista admin):


//Esto se debe agregar antes del código del GridView

<?php
// this is the date picker
$dateisOn = $this->widget('zii.widgets.jui.CJuiDatePicker', array(
 /*'model'=>$model,
 'attribute' => 'date_first',*/
 'name' => 'Auditoria[date_first]',
 'value' => $model->date_first,
 'language'=>'es',
 'options'=>array(
 'showAnim'=>'fold',
 'dateFormat'=>'yy-mm-dd',
 'changeMonth' => 'true',
 'changeYear'=>'true',
 'constrainInput' => 'false',
 ),
 'htmlOptions'=>array(
 'style'=>'height:20px;width:70px;',
 ),
 ),true) . '<br> a <br> ' . $this->widget('zii.widgets.jui.CJuiDatePicker', array(
 /*'model'=>$model,
 'attribute' => 'date_last',*/
 'name' => 'Auditoria[date_last]',
 'value' => $model->date_last,
 'language'=>'es',
 'options'=>array(
 'showAnim'=>'fold',
 'dateFormat'=>'yy-mm-dd',
 'changeMonth' => 'true',
 'changeYear'=>'true',
 'constrainInput' => 'false',
 ),
 'htmlOptions'=>array(
 'style'=>'height:20px;width:70px',
 ),
 ),true);
?>

//Esto se debe agregar en el código del GridView

'id'=>'auditoria-grid',
 'type'=>'striped bordered',
 'dataProvider'=>$model->search(),
 'afterAjaxUpdate'=>"function() { //Esto es lo que hay que agregar
 jQuery('#Auditoria_date_first').datepicker(jQuery.extend({showMonthAfterYear:false}, jQuery.datepicker.regional['es'], {'showAnim':'fold','dateFormat':'yy-mm-dd','changeMonth':'true','showButtonPanel':'true','changeYear':'true','constrainInput':'false'}));
 jQuery('#Auditoria_date_last').datepicker(jQuery.extend({showMonthAfterYear:false}, jQuery.datepicker.regional['es'], {'showAnim':'fold','dateFormat':'yy-mm-dd','changeMonth':'true','showButtonPanel':'true','changeYear':'true','constrainInput':'false'}));
 }",

'filter'=>$model,

//luego se debe cambiar 'fecha_auditoria', por este codigo:

array(
 'name'=>'fecha_auditoria',
 'filter'=>$dateisOn,
 'value'=>'$data->fecha_auditoria'
 ),

Haciendo esas modificaciones ya van a tener 100% funcional la búsqueda entre fechas, para que pueden utilizar estos códigos nada más deben de adaptarle al modelo y vista admin que deseen, básicamente lo que deben de cambiar es la fecha_auditoria por el campo que deseen, también deben de cambiar (Auditoria[date_first] , Auditoria[date_last] , #Auditoria_date_first , #Auditoria_date_last) por el nombre de su modelo, eso en la vista admin.

Acerca del autor: Rodrigo Paszniuk

Ingeniero Informático, amante de la tecnología, la música, el ciclismo y aprender cosas nuevas.

Posts Relacionados

  • Reportes gráficos en Yii
  • Backup en Yii
  • Manual intermedio de Yii framework (PHP)
  • Maestro-Detalle / Factura Compra en Yii – Parte II



SEGUÍNOS EN FACEBOOK


GITHUB