【问题标题】:Yii2 DateTime model validation format issueYii2 DateTime 模型验证格式问题
【发布时间】:2018-03-12 20:07:42
【问题描述】:

创建了一个带有名为“直到”的 dateTime 字段的模型,名称并不重要,它只是一个日期时间。 这是模型规则中的验证。

['until', 'datetime', 'format' => 'Y-m-d H:i:s'],

稍后在我实例化模型并更新字段后,我收到验证错误。

$model->until = '2017-10-15 14:30:04';
$eventRepeat->validate();
$errors = $model->errors;

$errors['until'][0] 将是'Until 的格式无效。'

我没想到会出现这个错误。

【问题讨论】:

  • 如果我将格式更改为:'yyyy-MM-dd hh:mm:ss'

标签: php validation datetime model yii2


【解决方案1】:

和 Yii2 文档一样

format:被验证的值应该是的日期/时间格式 in. 这可以是 ICU 手册中描述的日期时间模式。 或者,这可以是一个前缀为 php: 的字符串,代表一个 PHP Datetime 类可以识别的格式。

http://www.yiiframework.com/doc-2.0/guide-tutorial-core-validators.html#date

尝试使用

['until', 'datetime', 'format' => 'php:Y-m-d H:i:s'],

【讨论】:

  • 谢谢!这对我有帮助。我还添加了格式化程序的使用。见下文
【解决方案2】:

解决了!

设置格式为

php:Y-m-d H:i:s

并使用了格式化程序。

$model->until = Yii::$app
            ->formatter
            ->asDatetime(
                new DateTime('NOW + 2 weeks'),
                'php:Y-m-d H:i:s'
            );

【讨论】:

    猜你喜欢
    • 2012-01-26
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2019-01-27
    相关资源
    最近更新 更多