0

ビューにこのコード行があるとします。

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

start_timeはUNIXタイムスタンプです。ビューに表示するだけで、date()などの関数を適用できます。上記のコード行を使用して、フォームでフォーマットを表示する場合、どこにフォーマットを適用する必要がありますか?(このタイムスタンプ/日付の場合は特別かもしれませんが、日付ではなく、ただ作業したい場合はどうなるかにも興味があります

"データベース内の値"<>"さまざまなビューでの値のさまざまな表現。

ありがとう=)

4

3 に答える 3

1

次のように、CHtml::activeTextField の代わりに CHtml::textField を使用しました。

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

それが長期的にうまくいくかどうか見ていきます。

同じように、すぐに日付メソッドを適用する代わりに、 $model->getSomeProcessedData(); のようなものを使用できます。涼しい.. :]

于 2010-03-13T19:39:13.310 に答える
1

通常CActiveRecord::afterFind()、データを人間が読める形式CActiveRecord::beforeValidate()に変換し、元に戻すように拡張します。

常に複数のフォーマットを利用できるようにする必要がある場合は、Yii のゲッターとセッターを試してみてください。

両方を持っている

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

あなたの意見を入れることができCHtml::activeTextField($model, 'fieldName')ます。明らかに、これらのメソッドで基礎となるデータベース列を操作します (明らかに、あなたの場合は start_time と呼ばれています)。お役に立てれば。

于 2010-03-14T04:47:55.530 に答える
0

IMO、afterFind()を使用すると検索が遅くなり、beforeValidate()が表示データに影響を与えるとは思いません。getttart_time()をモデルクラスに追加して、start_time値のゲッターをオーバーライドすることをお勧めします。ここで、フォーマットコードは、データを表示する必要がある場合にのみ実行されます。

于 2010-06-12T06:21:01.070 に答える