Post 来自数据库的日期
Post date from database
我是 Laravel 5.1 的新手,当我从数据库中检索日期字符串并尝试在 blade 表单上显示时,我不知道自己做错了什么.
它不起作用,来自数据库的日期没有出现在Form::date
。
我知道我在这里遗漏了一些重要的东西:)
查看代码如下:
<div class="col-sm-6">
<div class="form-group">
{!! Form::label('birth_date', trans('userapps/userapps.birth_date'))!!}
{!! Form::date('birth_date', Input::old('birth_date'), array('class' => 'form-control input-lg'))!!}
@if ($errors->has('birth_date')) <p class="help-block">{{ $errors->first('birth_date') }}</p> @endif
</div>
</div>
控制器代码如下:
public function edit($id)
{
//show all saved values for editing
$userapp = UserApplication::findOrFail($id);
$birth_date = DateTime::createFromFormat('d/m/Y', $userapp->birth_date)->format('d/m/Y');
$data = array('birth_date' => $birth_date, 'userapp' => $userapp);
return view('admin/userapps/edit')->with($data);
}
提前致谢。
日期按以下格式输入 only accepts 值 yyyy-dd-mm
。这意味着您应该像这样格式化日期值:
DateTime::createFromFormat('d/m/Y', $userapp->birth_date)->format('Y-m-d');
浏览器将确保根据操作系统区域设置显示它。例如,如果我用 value="2015-12-05"
输入日期,根据我的 OS 语言环境,它将显示为 05/12/2015
。
一旦您解决了这个问题,就会出现另一个问题,该问题很可能会阻止显示日期。您将默认值设置为 Input::old('birth_date')
,这是您第一次访问表单时的 null
,因为在提交表单之前没有旧的输入数据。所以在你的控制器动作中你应该这样做:
public function edit($id)
{
$userapp = UserApplication::findOrFail($id);
// Use old input value and if that's not available then use the $userapp one
$birth_date = Input::old('birth_date') ?: DateTime::createFromFormat('d/m/Y', $userapp->birth_date)->format('Y-m-d');
$data =['birth_date' => $birth_date, 'userapp' => $userapp];
return view('admin/userapps/edit')->with($data);
}
在你的 Blade 视图文件中:
{!! Form::date('birth_date', $birth_date, array('class' => 'form-control input-lg'))!!}
有了这个,只有当有一个输入值时,它才会使用旧的输入值,否则它将使用数据库中的值。
也就是说,您应该知道输入的日期是 supported only by a few browsers。 Firefox、Safari 和 Internet Explorer 根本不支持它,因此如果您需要确保用户输入在所有浏览器中都限制为日期,我会使用 JavaScript 日期选择器库。
我是 Laravel 5.1 的新手,当我从数据库中检索日期字符串并尝试在 blade 表单上显示时,我不知道自己做错了什么.
它不起作用,来自数据库的日期没有出现在Form::date
。
我知道我在这里遗漏了一些重要的东西:)
查看代码如下:
<div class="col-sm-6">
<div class="form-group">
{!! Form::label('birth_date', trans('userapps/userapps.birth_date'))!!}
{!! Form::date('birth_date', Input::old('birth_date'), array('class' => 'form-control input-lg'))!!}
@if ($errors->has('birth_date')) <p class="help-block">{{ $errors->first('birth_date') }}</p> @endif
</div>
</div>
控制器代码如下:
public function edit($id)
{
//show all saved values for editing
$userapp = UserApplication::findOrFail($id);
$birth_date = DateTime::createFromFormat('d/m/Y', $userapp->birth_date)->format('d/m/Y');
$data = array('birth_date' => $birth_date, 'userapp' => $userapp);
return view('admin/userapps/edit')->with($data);
}
提前致谢。
日期按以下格式输入 only accepts 值 yyyy-dd-mm
。这意味着您应该像这样格式化日期值:
DateTime::createFromFormat('d/m/Y', $userapp->birth_date)->format('Y-m-d');
浏览器将确保根据操作系统区域设置显示它。例如,如果我用 value="2015-12-05"
输入日期,根据我的 OS 语言环境,它将显示为 05/12/2015
。
一旦您解决了这个问题,就会出现另一个问题,该问题很可能会阻止显示日期。您将默认值设置为 Input::old('birth_date')
,这是您第一次访问表单时的 null
,因为在提交表单之前没有旧的输入数据。所以在你的控制器动作中你应该这样做:
public function edit($id)
{
$userapp = UserApplication::findOrFail($id);
// Use old input value and if that's not available then use the $userapp one
$birth_date = Input::old('birth_date') ?: DateTime::createFromFormat('d/m/Y', $userapp->birth_date)->format('Y-m-d');
$data =['birth_date' => $birth_date, 'userapp' => $userapp];
return view('admin/userapps/edit')->with($data);
}
在你的 Blade 视图文件中:
{!! Form::date('birth_date', $birth_date, array('class' => 'form-control input-lg'))!!}
有了这个,只有当有一个输入值时,它才会使用旧的输入值,否则它将使用数据库中的值。
也就是说,您应该知道输入的日期是 supported only by a few browsers。 Firefox、Safari 和 Internet Explorer 根本不支持它,因此如果您需要确保用户输入在所有浏览器中都限制为日期,我会使用 JavaScript 日期选择器库。