J’ai essayé aussi de contourner ce problème en ajoutant cette condition dans mon _form.php
<div class="row">
<?php echo $form->labelEx($model,'date_fin'); ?>
<?php
[b]if(!$model->isNewRecord and $model->date_fin != null)
$model->date_fin = date('d/m/Y',$model->date_fin);[/b]
$this->widget('zii.widgets.jui.CJuiDatePicker', array(
'model'=>$model,
'attribute'=>'date_fin',
'language'=>Yii::app()->language,
'options'=>array(
'showAnim'=>'fold',
'format'=>'dd/mm/yyyy',
'debug'=>true,
),
'htmlOptions'=>array(
'style'=>'height:20px;'
),
));
?>
<?php echo $form->error($model,'date_fin'); ?>
</div>
Mais ce code, me pose problème avec la fonction rules et m’affiche cette erreur:
A non well formed numeric value encountered
array('date_fin','dateCompare','compareAttribute'=>'date_debut','operator'=>'>=', 'allowEmpty'=>true),
Voici la fonction dateCompare:
public function dateCompare($attribute,$params)
{
if (empty($params['compareAttribute']) || empty($params['operator']))
$this->addError($attribute, 'Invalide paramètre');
$compareTo=$this->$params['compareAttribute'];
if($params['allowEmpty'] && (empty($this->$attribute) || empty($compareTo)))
return;
//set default format if not specified
$format=(!empty($params['format']))? $params['format'] : 'dd/MM/yyyy';
//default operator to >
$compare=(!empty($params['operator']))? $params['operator'] : ">";
$start=CDateTimeParser::parse($this->$attribute,$format);
$end=CDateTimeParser::parse($compareTo,$format);
//a little php trick - safe than eval and easier than a big switch statement
if (version_compare($start,$end,$compare)) {
return;
} else {
$this->addError($attribute, "Date fin doit être $compare à la date début");
}
}
Je sais pas si je suis claire