Laravel 5.2以编辑形式显示保存的日期

时间:2016-04-23 18:49:41

标签: database forms date laravel-5 edit

这可能是一个非常非常简单的问题,但它让我难过......

所以,我在数据库中保存了一篇带有表单的文章,其中包括一个用于保存已发布日期的字段。在此字段中输入的数据与其余数据一起成功保存在数据库中。

我已成功将所有已保存的数据拉回到编辑表单中,除了published_date字段。

我尝试使用与其他字段相同的格式,例如标题,两者都显示在下面

{!! Form::text('title', null) !!}
{!! Form::input('date', 'first_published', null) !!} 

这会将dd / mm / yy放入输入框,而不是保存的日期。如果未更改此值,则日期将作为今天的日期保存在数据库中。

我也尝试删除'date'属性

  {!! Form::input('first_published', null ) !!}

这导致一个完全空的框(并且没有日期选择器),如果没有保存,它不会覆盖表单中的值。更好,但仍然不是我想要的,因为我想显示保存的日期,如果需要可以更改。

我也尝试在此字段中以各种方式回显$ article-> published_date,但最终只会得到与上述结果相同的结果。虽然使用{!!我可以在其他地方回显这些数据没问题$ article-> first_published !!}

表单引用模型如下:

{!! Form::model($article, ['method' => 'PATCH', 'url' => 'articles'.'/'. $article->id]) !!}

相关的控制器功能

   //page containing form to edit article, pulls in existing data
public function edit($id)
{
    $article = article::findOrFail($id);

    return view('articles.edit', compact('article'));
}

//responsible for updating the article record
public function update($id, Request $request)
{
    $article = article::findOrFail($id);
    $article->update($request->all());

    return redirect('articles');
}

该字段设置为迁移中的时间戳,在模型中我有

protected $dates = [
    'first_published'
];

因此,如果任何人都可以了解如何将保存的数据值放入表单字段,就像在其他字段中一样,我们将非常感激! :)如果我错过了一些令人眼花缭乱的明显问题,我对laravel很新,所以道歉......

3 个答案:

答案 0 :(得分:1)

我所做的是将Form::input('date', 'published_at', ...行相关的片段替换为以下代码部分(指您的Laracast Partials和Forms Reuse教程):

<!-- Published_at Form Text Input -->
<div class="form-group">
    {!! Form::label('published_at', 'Publish On:') !!}
    {!! Form::date('published_at', (isset($article) && $article->published_at ? $article->published_at : date('Y-m-d')), ['class' => 'form-control']) !!}
</div>

在上面替换的代码部分(isset($article) && $article->published_at ? $article->published_at : date('Y-m-d'))中,检查表单是否已经提供了$article个对象,然后使用其现有的published_at日期或其他明智的创建日期与当前时间和使用它

希望这对那里的人有所帮助。

答案 1 :(得分:0)

在其他任何人都有类似的问题 - 我现在找到了解决方案,这简直令人尴尬!

我更改了日期字段,如下所示:

    {!! Form::date('first_published', $article->first_published, ['class' => 'nameofclasshere']) !!}

这样字段的默认值是从我的数据库中提取的值(我可以在问题中详述的页面中的其他位置访问)。当我提交表单时,日期仍然是数据库中的值,除非我更改表单值,在这种情况下它会更新。

不知道这是否是正确或推荐的方法(并且与我如何完成其​​他字段的方式不同),但似乎可以做到这一点!

答案 2 :(得分:0)

显然这个问题已经关闭,但也许它可以帮助某人。 我正在使用表单进行编辑和创建,因此我执行了以下操作:

 <div class="form-group">
 <label class="control-label" for="date_">Proyect Date </label>
<input class="form-control" id="datepicker" name="date" placeholder="DD/MM/AA" value="
    @if (isset($proyect->date))
        {!!date('d-m-Y', strtotime($proyect->date))!!}
    @endif"  type="text">