Yii Framework Forum: [Résolu] Débutant - Cgridview Et Modification De Données - Yii Framework Forum

Jump to content

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

[Résolu] Débutant - Cgridview Et Modification De Données Rate Topic: -----

#1 User is offline   CrazyCat 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 41
  • Joined: 30-May 13
  • Location:Paris, France

Posted 30 May 2013 - 04:19 AM

Bonjour à tous.

Je débute avec Yii et j'essaye de développer quelque chose de propre. Actuellement, j'ai utilisé le gii pour créer le CRUD d'une table, mais je voudrais transformer les données affichées au sein du CGridView (je me base sur l'action "admin").
Par exemple, une colonne fsize contient le poids (en octets) d'un fichier, je voudrais l'afficher de manière lisible.

Donc, quelques questions se posent à moi :
  • Si j'ai bien compris, je dois créer un nouveau dataprovider qui étendra le principal et permettra de faire les modifications sur les lignes, où doit-il se placer ?
  • Quelles sont les méthodes obligatoires dans cette classe et quels paramètres recevront-elles ?


Merci d'avance.
0

#2 User is offline   bennouna 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,180
  • Joined: 05-January 12
  • Location:Morocco

Posted 30 May 2013 - 05:38 AM

Bonjour,

Quelque chose m'échappe… La colonne fsize correspond-elle à un champ dans une table de la BDD ?

Si oui, la réponse aux deux questions est "non".

Sinon, à quoi correspond cette colonne exactement ?

A+
0

#3 User is offline   CrazyCat 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 41
  • Joined: 30-May 13
  • Location:Paris, France

Posted 30 May 2013 - 06:09 AM

View Postbennouna, on 30 May 2013 - 05:38 AM, said:

Bonjour,

Quelque chose m'échappe… La colonne fsize correspond-elle à un champ dans une table de la BDD ?

Si oui, la réponse aux deux questions est "non".

Sinon, à quoi correspond cette colonne exactement ?

A+

Tout à fait.
Et en farfouillant un peu, voici ce que j'ai trouvé et fait:
views/fichier/admin.php
<?php $this->widget('zii.widgets.grid.CGridView', array(
	'id'=>'transfert-grid',
	'dataProvider'=>$model->search(),
	'filter'=>$model,
	'columns'=>array(
		'Id',
		array(
			'name' => 'DateMAJ',
			'value' => 'date("d/m/Y H:i:s", strtotime($data->DateMAJ))',
		),
		array(
			'name' => 'fsize',
			'value' => array($this, 'humanReadable')
		),
		...

Et dans le fichier controllers/FileController.php:
protected function humanReadable($data, $row)
{
   // ma moulinette
   return $humanValue;
}

Ca me semble fonctionner plutôt bien, mais je pense que je devrais mettre cette fonction à un endroit plus global (elle sera utilisée par d'autres modules), donc je cherche où la placer et comment l'appeler. A moins de faire des accesseurs depuis les controleurs qui en ont besoin ?
0

#4 User is offline   Sebastien 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 07-February 12
  • Location:Brussels

Posted 30 May 2013 - 08:09 AM

View PostCrazyCat, on 30 May 2013 - 06:09 AM, said:

Et dans le fichier controllers/FileController.php:
protected function humanReadable($data, $row)
{
   // ma moulinette
   return $humanValue;
}

Ca me semble fonctionner plutôt bien, mais je pense que je devrais mettre cette fonction à un endroit plus global (elle sera utilisée par d'autres modules), donc je cherche où la placer et comment l'appeler. A moins de faire des accesseurs depuis les controleurs qui en ont besoin ?


Tu peux créer une classe "components/Helper.php".

ensuite tu crées un méthode statique dans cette classe:

static function humanReadable($data, $row)
{
   // ma moulinette
   return $humanValue;
}


Quand tu veux utiliser cette méthode, tu fais:

Helper::humanReadable($data, $row);

----------
Sébastien Adam
http://www.sebastienadam.be/
0

#5 User is offline   CrazyCat 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 41
  • Joined: 30-May 13
  • Location:Paris, France

Posted 31 May 2013 - 02:35 AM

J4ai essayé, mais ça ne semble pas passer dans le CGridView quand je fais :
'value' => array($this, 'Helper::humanReadable')

0

#6 User is offline   seb7 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 49
  • Joined: 03-April 12

Posted 31 May 2013 - 02:48 AM

View PostCrazyCat, on 31 May 2013 - 02:35 AM, said:

J4ai essayé, mais ça ne semble pas passer dans le CGridView quand je fais :
'value' => array($this, 'Helper::humanReadable')



Salut,

'value' => array(Helper, 'humanReadable')


ou quelque chose comme ça (merci de pas répondre juste 'ça marche pas'). L'array contient la fonction de callback ('class','fonction') (donc pas $this)
0

#7 User is offline   CrazyCat 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 41
  • Joined: 30-May 13
  • Location:Paris, France

Posted 31 May 2013 - 02:53 AM

Merci seb7, je me doutais bien que c'était ma manière d'appeler qui n'allait pas.
La prochaine fois, je lirai la doc avant de poser la question.
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