En utilisant le cadre Yû, ce serait une bonne façon de traiter un attribut avant de l'afficher à l'aide CHtml :: activeTextField ()

StackOverflow https://stackoverflow.com/questions/2437045

  •  19-09-2019
  •  | 
  •  

Question

Dire que j'ai cette ligne de code dans la vue.

<?php echo CHtml::activeTextField($model,'start_time'); ?>

start_time est un horodatage UNIX. Lorsque vient l'afficher dans une vue que je peux appliquer des fonctions comme la date () sur elle. Où dois-je appliquer la mise en forme quand je l'afficher sous une forme, en utilisant la ligne ci-dessus code? (Ce cas de dates / heures des pourrait être spécial, mais je suis aussi intéressé à comment peut-on s'y prendre si ce n'était pas une date et je veux juste travailler avec

  

« valeur dans la base de données » <> « différentes représentations de la valeur dans des vues différentes.

Merci =)

Était-ce utile?

La solution

Nous étendons généralement CActiveRecord::afterFind() pour convertir les données en un format lisible par l'homme et CActiveRecord::beforeValidate() pour le transformer en arrière.

Si vous avez besoin de plus d'un format disponible à tout moment, vous pouvez donner aux apporteurs de Yii et setters essayer.

Ayant à la fois

  • CActiveRecord::getFieldName() et
  • CActiveRecord::setFieldName($value)

vous permet de mettre CHtml::activeTextField($model, 'fieldName') votre point de vue. De toute évidence, vous manipuler la colonne de base de données sous-jacente dans ces méthodes (apparemment, il est appelé start_time dans votre cas). Espérons que cela aide.

Autres conseils

Je l'ai utilisé le CHtml :: textField au lieu de CHtml :: activeTextField comme ceci:

<?php echo CHtml::textField(get_class($model).'[start_time]', date('Y-m-d H:i', $model->start_time)); ?>

Je vais voir si cela fonctionne dans le long terme.

De même au lieu d'appliquer la méthode de la date là, je pourrais avoir smth comme $ modèle-> getSomeProcessedData (); Cool ..:]

OMI, afterFind () vous faire ralentir votre recherche et je ne pense pas beforeValidate () jouent un rôle dans les données d'affichage. Je préfère l'ajout d'getttart_time () dans la classe du modèle pour remplacer le getter de la valeur start_time. Il code de mise en page seulement exécuter lorsque vous devez afficher les données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top