使用 Yii 框架,在使用 CHtml::activeTextField() 显示属性之前处理属性的正确方法是什么

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

  •  19-09-2019
  •  | 
  •  

假设我在视图中有这行代码。

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

start_time 是 UNIX 时间戳。当仅在视图中显示它时,我可以在其上应用 date() 等函数。当我使用上面的代码行在表单中显示格式时,应该在哪里应用格式?(时间戳/日期的这种情况可能很特殊,但我也感兴趣的是,如果它不是日期,我只想与

“数据库中的值”<>“不同视图中值的不同表示。

谢谢=)

有帮助吗?

解决方案

我们一般会延长 CActiveRecord::afterFind() 将数据转换为人类可读的格式并且 CActiveRecord::beforeValidate() 将其转换回来。

如果您始终需要多种可用格式,您可能想尝试一下 Yii 的 getter 和 setter。

两者兼具

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

允许你把 CHtml::activeTextField($model, 'fieldName') 在你看来。显然,您在这些方法中操作底层数据库列(显然在您的情况下它被称为 start_time )。希望这可以帮助。

其他提示

我使用了CHtml ::文本字段代替了CHtml :: activeTextField这样的:

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

我会看看是否能在长期内工作了。

在以相同的方式而不是施加日期方法在那里,我可以有不便如$模型 - > getSomeProcessedData();酷..:

IMO,一个afterFind()让你搜索慢下来,我不认为beforeValidate()中显示的数据起到任何作用。我喜欢加入getttart_time()到模型类重写START_TIME值的消气。有您的格式的代码,只有当你需要显示的数据运行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top