【问题标题】:Laravel date format in submission form (d-M-Y)提交表单中的 Laravel 日期格式(d-M-Y)
【发布时间】:2014-12-02 17:27:56
【问题描述】:

在刀片模板的提交表单中,我有以下日期表单,它适用于默认日期,如 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');
}

这是 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 构建器不是框架的核心要求,因此将其从核心中删除。我链接到的包是 L4 核心中包含的包,它作为一个单独的包进行维护,以实现 L5 的兼容性和使用,因此如果您选择这样做,您可以安全地使用它。

感谢@Bogdan 提供此更新。

【问题讨论】:

    标签: laravel date laravel-4 laravel-5


    【解决方案1】:

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

    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');
    }
    

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

    【讨论】:

    • 您是如何在输入字段中输入日期的? (我还更新了我的答案,提到了一些与处理日期时间值相关的内容)。
    • 另外,如果您发布负责创建/更新数据库条目的代码可能会有所帮助。
    • 我已根据您发布的代码更新了我的答案。
    • 谢谢,它就像魅力一样。在控制器内部,我之前做过同样的事情,似乎问题出在刀片内部,但正如我所说,它工作得很好,再次感谢我的加分。我将删除一些 cmets 并清理我的问题,以免其他人感到困惑。
    • Sure Carbon 将是下一步。
    猜你喜欢
    • 1970-01-01
    • 2018-05-25
    • 2014-04-27
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多