Yii Framework wäre, was ein richtiger Weg sein, ein Attribut zu verarbeiten, bevor es mit CHtml :: active Anzeigen ()

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

  •  19-09-2019
  •  | 
  •  

Frage

sagen, ich habe diese Codezeile in der Ansicht.

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

START_TIME ist ein UNIX-Zeitstempel. Wenn es nur in einer Ansicht angezeigt werden kann ich Funktionen wie Datum () auf sie anwenden. Wo soll ich die Formatierung anwenden, wenn ich es in einer Form bin Anzeige, indem die obige Codezeile verwenden? (Dieser Fall von Zeitstempeln / Terminen könnte etwas Besonderes sein, aber ich bin daran interessiert auch, wie würde man gehen über das, wenn es ist kein Date und ich möchte nur an der Arbeit mit

  

"Wert in Datenbank" <> „unterschiedliche Darstellungen des Wertes in verschiedenen Ansichten.

Danke =)

War es hilfreich?

Lösung

Wir in der Regel verlängern CActiveRecord::afterFind() die Daten in ein lesbares Format und CActiveRecord::beforeValidate() zu konvertieren es zurück zu verwandeln.

Wenn Sie mehr als ein Format jederzeit zur Verfügung benötigen, sollten Sie Yü die Getter und Setter einen Versuch geben.

, die sowohl

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

können Sie CHtml::activeTextField($model, 'fieldName') in Ihren Ansichten setzen. Offensichtlich manipulieren Sie die zugrunde liegenden Datenbankspalte in diesen Verfahren (anscheinend es heißt START_TIME in Ihrem Fall). Hoffe, das hilft.

Andere Tipps

Ich habe die CHtml :: Textfield statt CHtml :: active wie folgt verwendet:

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

Ich werde sehen, ob das auf lange Sicht funktioniert.

In der gleichen Art und Weise statt Datum Verfahren genau dort anzuwenden, könnte ich smth wie $ modell-> getSomeProcessedData (); Kühle ..:]

IMO, afterfind () machen Sie Ihre Suche verlangsamen, und ich glaube nicht, beforeValidate () in Anzeigedaten eine Rolle spielen. Ich ziehe das Hinzufügen getttart_time () in die Modellklasse die Getter von START_TIME Wert außer Kraft zu setzen. Es Ihre Formatierung Code nur ausgeführt, wenn Sie auf Anzeigedaten benötigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top