php - YII2中 ActiveForm里的field怎么可以输出时间而不是时间戳?
本文介绍了php - YII2中 ActiveForm里的field怎么可以输出时间而不是时间戳?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
<?= $form->field($model, 'time')->textInput() ?>
问题一:
我的time在数据库里是一个时间戳,我现在想显示的是时间,怎么处理一下?
问题二:
我在此日期表单中填入 如 2017-05-13 的字符串,在模型中可以写什么方法将它自动转为时间戳?
解决方案
class XXX extends \yii\db\ActiveRecord
{
public function rules()
{
return [
...other rules...
['time', function($attr, $params) {
if ($this->hasErrors()) return false;
$datetime = $this->{$attr};
$time = strtotime($datetime);
// 验证时间格式是否正确
if ($time === false) {
$this->addError($attr, '时间格式错误.');
return false;
}
// 将转换为时间戳后的时间赋值给time属性
$this->{$attr} = $time;
return true;
}],
];
}
...others...
/**
* 从数据库中 find() 数据后将 time 格式化。
*/
public function afterFind()
{
parent::afterFind();
$this->time = date('Y-m-d', $this->time);
}
这篇关于php - YII2中 ActiveForm里的field怎么可以输出时间而不是时间戳?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文