这可能是一个非常非常简单的问题,但它让我难过......
所以,我在数据库中保存了一篇带有表单的文章,其中包括一个用于保存已发布日期的字段。在此字段中输入的数据与其余数据一起成功保存在数据库中。
我已成功将所有已保存的数据拉回到编辑表单中,除了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很新,所以道歉......
答案 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">