Hola Comunidad
Espero que alguien pueda perder un poco de tiempo con esta tonteria. Resulta que tengo dos campos de fecha en modelo FECHA ALTA y FECHA BAJA.
estoy usando CjuidatePicker para el form. y en el modelo uso beforesave y afterfind para guardar y generar el formato correcto de la fecha.
lo que prentendo hacer es que cuando el campo de FECHA BAJA no se rellene o se deje en blanco se guarde en la tabla el valor NULL. Con la parte de FECHA ALTA funciona sin problemas. al dejar el campo de FECHA BAJA en blanco o sin rellenar me guarda la fecha con valor 0000-00-00.
en la parte de rules tengo declarado
array('FECHA_ALTA,FECHA_BAJA', 'default','setOnEmpty' => true,'value' => null),
array('FECHA_ALTA, FECHA_BAJA', 'type', 'type'=>'date', 'dateFormat'=>'dd-MM-yyyy'),
array('FECHA_ALTA, FECHA_BAJA', 'safe'),
La parte del modelo.
protected function beforeSave()
{
if ($this->FECHA_ALTA==''){
$this->FECHA_ALTA=NULL;
}
elseif ($this->FECHA_ALTA!=''){
$this->FECHA_ALTA = date('Y-m-d', CDateTimeParser::parse($this->FECHA_ALTA, 'dd-MM-yyyy'));
}
elseif ($this->FECHA_BAJA==''){
$sthis->FECHA_BAJA=NULL;
}
else
$this->FECHA_BAJA = date('Y-m-d', CDateTimeParser::parse($this->FECHA_BAJA, 'dd-MM-yyyy'));
return parent::beforeSave();
}
protected function afterFind()
{
$this->FECHA_ALTA = Yii::app()->dateFormatter->format('dd-MM-yyyy', $this->FECHA_ALTA);
$this->FECHA_BAJA = Yii::app()->dateFormatter->format('dd-MM-yyyy', $this->FECHA_BAJA);
return parent::afterFind();
}
En el FORM para ambos campos con el CjuiDatePicker
<?php echo $form->labelEx($model,'FECHA_BAJA'); ?>
<?php
$this->widget('zii.widgets.jui.CJuiDatePicker',array(
'name'=>'FECHA BAJA',
'language'=>'es',
'attribute'=>'FECHA_BAJA',
'model'=>$model,
// additional javascript options for the date picker plugin
'options'=>array(
'showAnim'=>'fold',
'dateFormat'=>'dd-mm-yy',
'changeMonth'=>'true',
'changeYear'=>'true',
'yearRange'=>'1985 :9999',
'minDate' => '01-07-1985',
'maxDate' => '31-12-9999'
),
'htmlOptions'=>array('style'=>'height:20px;','class'=>'date' ),
));
?>
<?php echo $form->error($model,'FECHA_BAJA'); ?>