Yii çerçevesini kullanma, ne chtml :: activeTextField kullanarak görüntülemeden önce bir öznitelik işlemek için doğru bir yol olabilir (olur)

3 Cevap php

Ben görünümünde bu kod satırı var diyelim.

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

start_time UNIX zaman damgası. Sadece görünümünde görüntülerken Bunun üzerine () tarih gibi işlevleri uygulayabilirsiniz. Ben yukarıdaki kod satırını kullanarak, bir form içinde görüntüleyerek olduğumda nerede biçimlendirmeyi uygulamak gerekir? (Damgaları / tarihleri ​​Bu durum özel olabilir, ama ben bir tarih değilse nasıl bir hakkında gitmek istiyorum da ilgilendi ve ben sadece çalışmak istiyorum

Farklı görünümlerde değeri "değeri veritabanında" <> "farklı gösterimleri.

Teşekkürler =)

3 Cevap

Biz genel CActiveRecord::afterFind() okunabilir bir biçime verileri dönüştürmek için ve CActiveRecord::beforeValidate() geri dönüşümü uzatmak.

Her zaman mevcut birden fazla biçimi gerekiyorsa, Yii ait alıcı ve ayarlayıcıları bir denemek isteyebilirsiniz.

Her iki Having

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

Eğer görünümlerde CHtml::activeTextField($model, 'fieldName') koymanızı sağlar. Açıkçası, bu yöntemleri temel veritabanı sütununu (görünüşe göre bu durumda start_time denir) işlemek. Umarım bu yardımcı olur.

Ben bunun yerine böyle chtml :: activeTextField arasında chtml :: TextField kullandım:

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

Bu uzun vadede işe yararsa ben görürsünüz.

Sağ yerine orada tarih yöntemini uygulayarak aynı şekilde, ben $ modeli-> getSomeProcessedData () gibi smth olabilir; Soğuk ..:]

IMO, afterFind () aramanızı yavaşlatır ve ben beforeValidate () ekran verilerde herhangi bir rol oynadığını düşünmüyorum. Ben start_time değerin getter geçersiz kılmak için bir model sınıfa getttart_time () ekleyerek tercih ederim. Eğer verileri görüntülemek için gerektiğinde biçimlendirme kodu Orada sadece çalıştırın.