php - YII2中 ActiveForm里的field怎么可以输出时间而不是时间戳?
漂亮男人
漂亮男人 2017-05-16 12:57:56
[PHP讨论组]

<?= $form->field($model, 'time')->textInput() ?>

问题一:
我的time在数据库里是一个时间戳,我现在想显示的是时间,怎么处理一下?

问题二:
我在此日期表单中填入 如 2017-05-13 的字符串,在模型中可以写什么方法将它自动转为时间戳?

漂亮男人
漂亮男人

全部回复(1)
怪我咯
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中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号