استخدام إطار YII، ما سيكون وسيلة صحيحة لمعالجة سمة قبل عرضه باستخدام CHTML :: ActiveTextfield ()

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

  •  19-09-2019
  •  | 
  •  

سؤال

قل لدي هذا الخط من التعليمات البرمجية في الرأي.

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

start_time هو timestamp يونيكس. عند عرضه فقط في طريقة عرض يمكنني تطبيق الوظائف مثل التاريخ () عليه. أين يجب أن أطبق التنسيق عند عرضه في نموذج، باستخدام السطر أعلاه من التعليمات البرمجية؟ (قد تكون هذه الحالة من الطوابع الزمنية / التواريخ خاصة، لكنني مهتم أيضا بكيفية الذهاب إذا لم يكن هناك موعد وأريد فقط العمل معه

"القيمة في قاعدة البيانات" <> تمثيلات مختلفة للقيمة في وجهات النظر المختلفة.

شكرا =)

هل كانت مفيدة؟

المحلول

نحن عادة تمديد CActiveRecord::afterFind() لتحويل البيانات إلى تنسيق قابل للقراءة البشرية و CActiveRecord::beforeValidate() لتحويلها مرة أخرى.

إذا كنت بحاجة إلى أكثر من تنسيق واحد متوفر في جميع الأوقات، فقد ترغب في إعطاء Jetters YII و STIRTERS.

وجود كليهما

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

يسمح لك بوضع CHtml::activeTextField($model, 'fieldName') في وجهات نظركم. من الواضح، يمكنك التعامل مع عمود قاعدة البيانات الأساسي في تلك الأساليب (يبدو أنه يسمى Start_Time في قضيتك). أتمنى أن يساعدك هذا.

نصائح أخرى

لقد استخدمت ChTML :: TextField بدلا من chtml :: ActiveTextfield مثل هذا:

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

سأرى إذا كان هذا يعمل على المدى الطويل.

في نفس الطريق بدلا من تطبيق طريقة التاريخ اليمنى هناك، يمكن أن يكون لدي SMTH مثل نموذج $-> GetsomeProcessEdData ()؛ بارد.. :

IMO، Afterfind () تجعلك تبطئ بحثك ولا أعتقد أنه يلعب أي دور في عرض بيانات العرض. أفضل إضافة getttart_time () إلى فئة النموذج لتجاوز قيمة metter من قيمة start_time. هناك رمز التنسيق الخاص بك يعمل فقط عند الحاجة لعرض البيانات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top