Champ Date En Integer

Mes champs date sont en integer j’arrive bien à les afficher sous le format date au niveau de la vue view avec le zii.widgets.CDetailView

en faisant appel à une fonction de formatage de date :


    public static function formatDate ($data) {


            return date("d/m/Y", ($data->datecreation));

    } 

mais cette meme fonction si je l’appelle avec la vue admin pour le zii.widgets.grid.CGridView impossible d’avoir le format de date. Pourquoi ??

J’ai aussi le meme probleme entre ces deux vues pour une constante qui s’il est égal 1 j’affiche oui et 0 j’affiche non sur le zii.widgets.CDetailView il le fait mais sur le zii.widgets.grid.CGridView impossible pour le moment .

la fonction elle est là




	public function formatedate($ladate)

	{

		return  date("d/m/Y", ($ladate)); 

	}

    public static function afficherchampsview($data)

    {

        $ladate=new Fonctionsdate;

        $t=array(array(

                    'name' => 'datecreation',

                    'value' => $ladate->formatedate($data->datecreation), // appel de la fonction formatDate($data)

                ));

        $t=array_merge($t,array(array(

            'name' => 'datemiseajour',

            'value' => $ladate->formatedate($data->datemiseajour), // appel de la fonction formatDate($data)

        )));

        $t=array_merge($t,array(array(

            'name' => 'usercreation',

            'value' => ($data->usercreation!=null and $data->usercreation!=0)?$data->relutilisateurcreation->username:"", // appel de la relation

        )));

        $t=array_merge($t,array(array(

            'name' => 'usermiseajour',

            'value' => ($data->usermiseajour!=null and $data->usermiseajour!=0)?$data->relutilisateurmodification->username:"", // appel de la relation

        )));              

        return $t;


    }



le code de la vue admin est là. Parmis les deux fonctions quelque soit celle que j’appelle la date n’est pas affichée correctement(elle s’affiche sous le format 0.00050761421319797).

les utilisateurs ne s’affichent pas ainsi que la variable actif. le code de la variable actif me génére meme une erreur c’est pourquoi j’ai mis ici actif qui m’affiche directement 1 ou 0 à la place de “oui” ou “non” comme je le voudrais.




<?php  $ladate=new Fonctionsdate;

       $afficher=new Affichages;

       $tab=$afficher->afficherchampsview($model);

       var_dump($tab);

?>

<?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'constante-grid',

	'dataProvider'=>$model->search(),

	'filter'=>$model,

	'columns'=>array(// Liste des colonnes affichées

		'libellecle',

		'actif',		

		array(

		    'name' => 'datecreation',

                    'value' => $ladate->formatedate($model->datecreation), // appel de la fonction formatDate($data) de la classe objet

		),

		array(

			 'name' =>'usernamemodifier_search', 

			 'value'=>('$data->relutilisateurmodification->username'!=null && '$data->relutilisateurmodification->username'!=0)?'$data->relutilisateurmodification->username':""

		),

                $tab[0],

		$tab[1],

		$tab[2],

		$tab[3],

		array(

			'class'=>'CButtonColumn',

		),

	),

)); ?>



le code de la vue view . La date et les utilisateurs s’affichent normalement ainsi que la variable actif




<?php  $ladate=new Fonctionsdate;

       $afficher=new Affichages;

       $tab=$afficher->afficherchampsview($model);

?>

<?php $this->widget('zii.widgets.CDetailView', array(

	'data'=>$model,

	'attributes'=>array(

		'libelle',

	    array(

			'name'=>'actif',

			'value'=>Yii::app()->params['actifnum']?Yii::app()->params['actifstring']:Yii::app()->params['nonactifstring'],

		),

		$tab[0],

		$tab[1],

		$tab[2],

		$tab[3],

    ),

	

)); ?>



Bien le bonjour Gueye !

Ce bout de code :


array(

                         'name' =>'usernamemodifier_search', 

                         'value'=>('$data->relutilisateurmodification->username'!=null && '$data->relutilisateurmodification->username'!=0)?'$data->relutilisateurmodification->username':""

                ),



ne peut pas fonctionner, a cause des ', tu test une chaine de caractères et non pas ta variable. Je pense qu’il faudrait les retirer :


array(

                         'name' =>'usernamemodifier_search', 

                         'value'=>($data->relutilisateurmodification->username !=null && $data->relutilisateurmodification->username !=0)?$data->relutilisateurmodification->username:""

                ),



Dis moi ce que ça donne.

Pour ta colone actif, est ce qu’il suffirait de faire ça ?


array(

                         'name' =>'actif', 

                         'value'=> $data->actif ? 'oui' : 'non

                ),



Tiens moi au courant :)

Pour la colonne actif finalement voila ce que j’ai fait et cela marche.


		

array(

	'name'   =>'actif',

	'value'  =>'(isset($data->actif) && $data->actif=='.Yii::app()->params['actifnum'].' ?'."Yii::app()->params['actifstring']".':'."Yii::app()->params['nonactifstring']".')',

),

comme vous le voyez je sais pas pourquoi mais il faut bien mettre les quotes.

Alors pour la date la je comprends rien. Si je fais :


	'datecreation',

	'datemiseajour',

c’est affiché mais en integer puisqu’ils sont de type integer. mais alors comment les formatter en date c’est un problème. Si j’appelle la class formatedate cela ne marche pas.


<?php  $ladate=new Fonctionsdate;?>

       <?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'constante-grid',

	'dataProvider'=>$model->search(),

	'filter'=>$model,

	'columns'=>array(// Liste des colonnes affichées

		'id',

		array(

			'name'   =>'actif',

			'value'  =>'(isset($data->actif) && $data->actif=='.Yii::app()->params['actifnum'].' ?'."Yii::app()->params['actifstring']".':'."Yii::app()->params['nonactifstring']".')',			

		),

		//'datecreation',

		//'datemiseajour',

		array(

		    'name' => 'datecreation',

                    'value' =>$ladate->formatedate('datecreation'), // appel de la fonction formatDate($data, $row) de la classe objet		),

		),




Si j’exécute , il m’affiche cette erreur




date() expects parameter 2 to be long, string given


C:\xamppversion\XampWin32_182\htdocs\Projet\PROJTEST\protected\fonctions\Fonctionsdate.php(12)


01 <?php

02 class Fonctionsdate

03 {

04     /**

05      * Retourne la valeur formatée de la date de création

06      * @param  $data date à formater

07      * @return date Date à afficher

08      */

09     public function formatedate($ladate)

10     {

11

12         return  date("d/m/Y", ($ladate)); 

13     }

l’erreur sélectionne la 12 ligne. Et bizarrement cette meme fonction marche avec la view sur le zii.widgets.CDetailView par contre il le refuse sur le gets.grid.CGridView.

si je modifie en remplaçant la partie de la date par:


		array(

		    'name' => 'datecreation',

                    'value' =>$ladate->formatedate($model->datecreation), // appel de la fonction formatDate($data, $row) de la classe objet		),

		),

il me l’affiche mais sous un format bizarre (0.00050761421319797) et c’est la même valeur qui est affichée sur toutes les lignes de la colonne.

Aprés multiples recherche voila la solution que j’ai mis en place :


		array(

			'name'   =>'actif',

			'value'  =>'(isset($data->actif) && $data->actif=='.Yii::app()->params['actifnum'].' ?'."Yii::app()->params['actifstring']".':'."Yii::app()->params['nonactifstring']".')',

		),

		array(

		    'name' => 'datecreation',

		    'value'=> '(isset($data->datecreation) && $data->datecreation!==null)?date("d/m/Y",$data->datecreation):""'

		),

		array(

		    'name' => 'datemiseajour',

		    'value'=> '(isset($data->datemiseajour) && $data->datemiseajour!==null)?date("d/m/Y",$data->datemiseajour):""'

		),

Arkiens comme vous voyez il y’a les quotes sinon cela ne marche pas. La maintenant j’ai ce que je veux pour l’affichage.