gpt4 book ai didi

提交表单中的 Laravel 日期格式 (d-M-Y)

转载 作者:行者123 更新时间:2023-12-03 16:54:16 26 4
gpt4 key购买 nike

在 Blade 模板中的提交表单中,我有以下日期表单,它可以正常使用默认日期,如 Y-m-d .

但我想显示日期,如 d-M-Y ,我试图找到一个可用的解决方案,但运气不佳

这是适用于默认日期的代码:

这是模型

public static $rules = [
'birthday' => 'date'
];

protected $fillable = ['birthday'];

这是 Controller 方法
public function update($id)
{
$kid = Kid::findOrFail($id);

$validator = Validator::make($data = Input::all(), Kid::$rules);

if ($validator->fails())
{
return Redirect::back()->withErrors($validator)->withInput();
}

$kid->update($data);
return Redirect::to('kids/list');
}

这是 Blade 模板
{{ Form::model($kid, ['method' => 'PATCH', 'route' => ['kids.update', $kid->id], 'files' => true], ['class' => 'form-horizontal']) }}
{{ Form::text('birthday', null, ['class' => 'form-control']) }}
{{ Form::submit('Confirm update', ['class' => 'btn btn-primary']) }}
{{ Form::close() }}

更新

这适用于 4.2 及更高版本的所有 Laravel 版本。

对于 Laravel 5.1 及更新版本,您需要将其安装为 separate package因为它不再是 Laravel 5 核心的一部分。

决定 html/form builder 不是框架的核心要求,所以它从核心中删除。我链接到的软件包是包含在 L4 核心中的软件包,并且作为 L5 兼容性和使用的单独软件包进行维护,因此如果您选择这样做,您可以安全地使用它。

感谢@Bogdan 提供此更新。

最佳答案

如果您需要一种用于 db 存储的日期格式而另一种用于用户交互的日期格式,则需要在显示它之前以及将其存储到数据库之前对其进行处理。所以你应该做这样的事情:

1. 转换表单输入的日期值:

{{ Form::text('birthday', date('d-M-Y', strtotime($kid->birthday)), ['class' => 'form-control']) }}

2.保存前先转换成数据库需要的格式:
public function update($id)
{
$kid = Kid::findOrFail($id);

// Convert birthday format to be compatible with database ISO 8601 format
$data = Input::all();
$data['birthday'] = date('Y-m-d', strtotime($data['birthday']));

$validator = Validator::make($data, Kid::$rules);

if ($validator->fails())
{
return Redirect::back()->withErrors($validator)->withInput();
}

$kid->update($data);
return Redirect::to('kids/list');
}

如果你想要一种更面向对象的处理日期的方式,你可以使用 Carbon 这已经被 Laravel 包含了。

关于提交表单中的 Laravel 日期格式 (d-M-Y),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27255392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com