试图呈现日期

时间:2018-06-11 14:45:54

标签: php html laravel-5.5

我有这段代码,

<div class="form-group">
  <label class="col-sm-2 control-label" for="date-created">Date Created</label>
  <div class="col-sm-10">
    @if (isset($post->created_at))
      <input type="date" class="form-control" id="date-created" name="created_at" value="{{ date('d/m/Y', strtotime($post->created_at)) }}">
    @else
      <input type="date" class="form-control" id="date-created" name="created_at" placeholder="Enter the date the blog post created">
    @endif
  </div>
</div>

我要做的是,将日期从数据库显示回输入框,允许用户编辑日期。

但是在浏览器上呈现时显示了

enter image description here 最好的做法是什么? : - )

请不要downvote。这可能是一个简单的问题,但我找不到一个简单的解释,说明为什么它对我不起作用。

2 个答案:

答案 0 :(得分:2)

您唯一错误的是日期格式,根据Mozilla Developers Guide for the <input type="date"> field YYYY-MM-DD。因此,您只需将日期格式字符串切换为Y-m-d

或者,您也可以使用AntonyMN提到的Carbon方法并使用函数toDateString()。如果您将created_at字段设置为模型中$date字段的protected $dates = ['created_at'];字段的一部分,则您甚至不需要将日期字符串解析为Carbon对象。该模型将根据需要简单地返回一个Carbon对象。

顺便说一下,由于输入的固定格式,我不认为使用占位符可以在日期输入字段上工作。

答案 1 :(得分:1)

Laravel附带Carbon nesbot开箱即用以帮助格式化日期。 laravel中的日期可以很容易地格式化:

{{\Carbon\Carbon::parse($post->created_at)->format('d/m/Y') }}

{{\Carbon\Carbon::parse($post->created_at)->format('jS M Y') }}

只是展示一些选项。您可以获得有关日期格式here

的完整文档

在您的情况下,代码应为

@if (isset($post->created_at))
  <input type="date" class="form-control" id="date-created" name="created_at" value="{{ \Carbon\Carbon::parse($post->created_at)->format('d/m/Y') }}">
@else
  <input type="date" class="form-control" id="date-created" name="created_at" placeholder="Enter the date the blog post created">
@endif