Laravel Blade中datetime-local输入框绑定$value变量不生效问题求解
问题排查方向
- 首先验证
input[type=datetime-local]的格式合法性HTML原生
datetime-local输入框对value格式有强校验,必须严格符合YYYY-MM-DDTHH:mm的ISO 8601格式(注意日期和时间之间是大写字母T,不能是空格,不能带秒数、时区后缀),格式不匹配的情况下浏览器会直接忽略value值,不做显示。
你可以直接在模板中输出{{ gettype($value) }}、{{ $value }}打印传入值的类型和原始字符串,确认是否符合格式要求。如果传入的是Carbon/DateTime对象,需要手动格式化后再赋值:<input type="datetime-local" value='{{ $value->format('Y-m-d\TH:i') }}' /> - 排查参数传递异常
你父文件调用代码中old(event_date)缺少引号,PHP会优先将event_date识别为常量,未定义的情况下才会强转为字符串,可能导致取值异常,需要修正为old('event_date')。同时确认你传入的第三个参数DateTime是合法的日期值,而非未实例化的类名。 - 对比
Form::text生效的原因Form::text生成的是普通文本输入框,没有浏览器内置的格式校验,只要是字符串就会正常显示,因此不受日期格式约束,这也是两种写法表现不一致的核心原因。 - 额外验证:你可以手动写一个固定符合格式的value测试,比如
<input type="datetime-local" value="2024-06-01T12:00" />,如果这个可以正常显示,就可以100%确定是你传入的$value格式不符合要求导致的问题。
内容的提问来源于stack exchange,提问作者Breezer
相关产品推荐
相关产品推荐

