Yii Framework Forum: Affichage Date Dans Le Formulaire De Mise À Jour Cjuidatepicker - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Affichage Date Dans Le Formulaire De Mise À Jour Cjuidatepicker Rate Topic: -----

#1 User is offline   tiffany 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 11
  • Joined: 02-January 13

Posted 09 January 2013 - 05:04 AM

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?
0

#2 User is offline   fouss 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 394
  • Joined: 05-October 10
  • Location:Bamako Mali

Posted 09 January 2013 - 09:37 AM

View Posttiffany, 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?
Posted Image
0

#3 User is offline   tiffany 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 11
  • Joined: 02-January 13

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
0

#4 User is offline   tiffany 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 11
  • Joined: 02-January 13

Posted 09 January 2013 - 10:52 AM

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 :unsure:
0

#5 User is offline   fouss 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 394
  • Joined: 05-October 10
  • Location:Bamako Mali

Posted 09 January 2013 - 06:50 PM

Comment affiches tu la date dans la vue?
Posted Image
0

#6 User is offline   grandoom 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 34
  • Joined: 11-July 12

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 :)
0

#7 User is offline   fouss 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 394
  • Joined: 05-October 10
  • Location:Bamako Mali

Posted 27 January 2013 - 04:18 PM

Une discussion intéressante à a ce sujet ici
Posted Image
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users