Bonjour,
J'ai un problème pour afficher correctement ma date dans le formulaire de mise à jour.
Ma date est enregistré dans ma base de données sous forme d'entier. (J'utilise CDateTimeParser :: parse en mon beforeSave()).
Je n'ai pas de problème d'affichage dans la liste et détail view: la date s'affiche correctement sous la forme jj / mm / aaaa. Mais dans le formulaire de mise à jour c'est affiché comme un nombre entier.
J'ai utilisé la fonction afterFind , qui a résolu le problème dans le formulaire de mise à jour, mais ca a créer un problème dans la liste et détail view.
Que puis-je faire?
Page 1 of 1
Affichage Date Dans Le Formulaire De Mise À Jour Cjuidatepicker
#2
Posted 09 January 2013 - 09:37 AM
tiffany, on 09 January 2013 - 05:04 AM, said:
J'ai utilisé la fonction afterFind , qui a résolu le problème dans le formulaire de mise à jour, mais ca a créer un problème dans la liste et détail view.
Quel est ce problème? peux tu être plus précis?
#3
Posted 09 January 2013 - 10:38 AM
public function afterFind()
{
$retVal = parent::afterSave();
$this->date_debut=date('d/m/Y', $this->date_debut);
$this->date_fin=date('d/m/Y', $this->date_fin);
return $retVal;
}
La date s'affiche correctement dans mon formulaire de mise à jour et quand je clique sur valider, j'ai cette erreur dans le view:
A non well formed numeric value encountered
Sachant que j'utilise cette fonction aussi, vu que dans ma BDD ce champs est de type int:
public function beforeSave()
{
$this->date_debut=CDateTimeParser::parse($this->date_debut,'dd/MM/yyyy');
$this->date_fin=CDateTimeParser::parse($this->date_fin,'dd/MM/yyyy');
return parent::beforeSave();
}Merci pour votre aide
#4
Posted 09 January 2013 - 10:52 AM
J'ai essayé aussi de contourner ce problème en ajoutant cette condition dans mon _form.php
Mais ce code, me pose problème avec la fonction rules et m'affiche cette erreur:
A non well formed numeric value encountered
Voici la fonction dateCompare:
Je sais pas si je suis claire
<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
#6
Posted 14 January 2013 - 06:57 AM
salut!
bon alors c'est tout bon tout ça... (ta formule de comparaison ta view ça va.) et ton beforeSave c'est une bonne idée
je penche pour un problème de format => tente d'uniformiser toutes tes conversions de date
en utilisant partout dd/MM/yyyy par exemple...y compris dans le widget...
j'espère que ça va t'aider..
A peluche
bon alors c'est tout bon tout ça... (ta formule de comparaison ta view ça va.) et ton beforeSave c'est une bonne idée
je penche pour un problème de format => tente d'uniformiser toutes tes conversions de date
en utilisant partout dd/MM/yyyy par exemple...y compris dans le widget...
j'espère que ça va t'aider..
A peluche
Share this topic:
Page 1 of 1

Help












