提交表格中的Laravel日期格式(dMY)

may*_*ʎɐɯ 8 date laravel laravel-4 laravel-5

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

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

以下是使用默认日期的代码:

这是模型

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

protected $fillable = ['birthday'];
Run Code Online (Sandbox Code Playgroud)

这是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');
}
Run Code Online (Sandbox Code Playgroud)

这是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() }}
Run Code Online (Sandbox Code Playgroud)

UPDATE

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

对于Laravel 5.1及更高版本,您需要将其作为单独的软件包安装,因为它不再是Laravel 5核心的一部分.

决定html /表单构建器不是框架的核心要求,因此它已从核心中删除.我链接的包是L4核心附带的包,并作为L5兼容性和使用的单独包维护,因此如果您选择这样做,您可以安全地使用它.

感谢@Bogdan的更新.

Bog*_*dan 13

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

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

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

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');
}
Run Code Online (Sandbox Code Playgroud)

如果您想要一种更面向对象的处理日期的方法,您可以使用Carbon已经包含在Laravel中的日期.