Forms laravel表单模型绑定-日期格式

Forms laravel表单模型绑定-日期格式,forms,binding,laravel,model,laravel-4,Forms,Binding,Laravel,Model,Laravel 4,我有拉威尔。我有一张表格。我有一个MySQL数据库。里面有一些日期。当我绑定模型和表单时,表单会尽职尽责地填充原始MySQL日期。这显然不是我需要的 我的问题是:如何让模型绑定表单以更可读的方式显示日期?!?没有机会截取和格式化数据。或者,对于更一般的解决方案,在用户看到模型和表单之间的任何数据之前,是否有任何方法对其进行处理 我是不是完全错了?非常感谢 您可以在模型中添加如下方法: public function getCreatedAtAttribute($date) { $date

我有拉威尔。我有一张表格。我有一个MySQL数据库。里面有一些日期。当我绑定模型和表单时,表单会尽职尽责地填充原始MySQL日期。这显然不是我需要的

我的问题是:如何让模型绑定表单以更可读的方式显示日期?!?没有机会截取和格式化数据。或者,对于更一般的解决方案,在用户看到模型和表单之间的任何数据之前,是否有任何方法对其进行处理

我是不是完全错了?非常感谢

您可以在模型中添加如下方法:

public function getCreatedAtAttribute($date)
{
    $date = new \Carbon\Carbon($date);
    // Now modify and return the date
}

这将在处创建的
中调用。还要检查是否需要覆盖默认值。选中。

您可以使用
format()
方法在表单中格式化日期

如果在表单元素中使用它:

{{ Form::text('name', $model->created_at->format('d/m/Y H:i')) }}
如果将其显示为纯文本:

{{ $model->created_at->format('d/m/Y H:i') }}
如果您希望用户能够以良好的方式修改日期,可以使用三个不同的选择字段。以下是我参与的一个项目的摘录,该项目允许用户更改出生日期:

<div class="form-group {{ $errors->has('date_of_birth') ? 'has-error' : '' }}">
    {{ Form::label('date_of_birth', 'Date of Birth', ['class' => 'control-label']) }}
    <div class="form-inline">
        {{ Form::selectRange('date_of_birth[day]', 1, 31, null, ['class' => 'form-control']) }}
        {{ Form::selectMonth('date_of_birth[month]', null, ['class' => 'form-control']) }}
        {{ Form::selectYear('date_of_birth[year]', date('Y') - 3, date('Y') - 16, null, ['class' => 'form-control']) }}
    </div>
    {{ $errors->first('date_of_birth', '<span class="help-block">:message</span>') }}
</div>

现在,这将使其成为
Carbon
的一个实例,让您可以随心所欲地进行格式化,并且可以轻松地修改、复制和大量其他内容。有关这方面的更多信息,请参阅:

您可以通过在模型中创建访问器来格式化从数据库检索到的所有字段。例如,如果您的数据库字段是在
处创建的,请使用
getCreateDataAttribute

public function getCreatedAtAttribute($date)
{
    return Carbon::($date)->format('d/m/Y');
}

我没有太多的时间,所以我不能给出一个完整的答案,但你应该检查一下这里的文档。。。您可以使用mutators自动为您提供所需的日期格式。也许模型演示者可以提供帮助:我可以修改此字段以访问其他字段吗?ie:public function getMyOtherDateFieldAttribute($date){…是的,您只需在要修改的列之后命名函数。只需确保函数名使用驼峰大小写。当数据字段名为start_dt时,函数名是什么。例如public function getStart_dtAttribute($date){}。为什么它强迫使用碳。应该是
GetStartDatAttribute
@webtuts4u:-)嘿,“Trass Vasston”,访问者总是会格式化日期,当你不想格式化它检索到的每个案例时,这可能是一件令人头痛的事。)!因此,我建议@ollieread的答案而不是使用访问者。
$date=new\carbon\carbon($date);
将生成一个
Carbon
对象,
$date
将成为
Carbon
对象,因为
new\Carbon\Carbon($date)
。在我的回答中,我已经提到了
//现在修改并返回日期
@WereWolf TheAlpha是的,但是如果您返回
Carbon
对象,那么仅仅使用
format()
并没有任何实际好处。
public function getCreatedAtAttribute($date)
{
    return Carbon::($date)->format('d/m/Y');
}