在刀片模板的提交表单中,我有以下日期表格,并且可以使用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 /表单构建器不是框架的核心要求,因此它已从核心中删除。我链接的软件包是L4核心附带的软件包,并作为L5兼容性和使用的单独软件包进行维护,因此如果您选择这样做,您可以安全地使用它。
感谢@Bogdan的更新。
答案 0 :(得分:13)
如果您需要一个数据库存储的日期格式和另一个用于用户交互的日期格式,则需要在显示它之前以及将其存储到数据库之前对其进行处理。所以你应该做这样的事情:
<强> 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
。