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

提交表格中的Laravel日期格式(d-M-Y),laravel,date,laravel-4,laravel-5,Laravel,Date,Laravel 4,Laravel 5,在blade模板的提交表单中,我有以下日期表单,它与默认日期(如Y-m-d)配合良好 但是我想显示日期,比如d-M-Y,我试图找到一个不走运的可用解决方案 以下是使用默认日期的代码: 这是模型 public static $rules = [ 'birthday' => 'date' ]; protected $fillable = ['birthday']; 这里是控制器方法 public function update($id) { $kid = Kid::fi

在blade模板的提交表单中,我有以下日期表单,它与默认日期(如
Y-m-d
)配合良好

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

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

这是模型

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

protected $fillable = ['birthday'];
这里是控制器方法

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');
}
这是刀片模板

{{ 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版本

对于Laravel5.1及更新版本,您需要将其作为一个组件安装,因为它不再是Laravel5核心的一部分

决定html/表单生成器不是框架的核心需求,因此将其从核心中删除。我链接到的包是L4 core附带的包,它作为一个单独的包进行维护,以实现L5的兼容性和使用,因此如果您选择这样做,您可以安全地使用它


感谢@Bogdan的更新。

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

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

{{ Form::text('birthday', date('d-M-Y', strtotime($kid->birthday)), ['class' => 'form-control']) }}
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');
}
2。保存前,将其转换为数据库所需的格式:

{{ Form::text('birthday', date('d-M-Y', strtotime($kid->birthday)), ['class' => 'form-control']) }}
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');
}

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

您如何在输入字段中键入日期?(我还更新了我的答案,其中提到了一些与处理日期时间值有关的内容)。此外,如果您发布了负责创建/更新数据库条目的代码,这可能会有所帮助。我已根据您发布的代码更新了我的答案。Thx,它的工作方式很有魅力。在我之前做过的控制器中,问题似乎出在刀片内部,但正如我所说的,它工作得非常完美,再次感谢并感谢我。我会删除一些评论,并清理我的问题,这样其他人就不会感到困惑。当然,碳将是下一步。