这可能是一个非常非常简单的问题,但它让我难过......
所以,我在数据库中保存了一篇带有表单的文章,其中包括一个用于保存已发布日期的字段 . 在此字段中输入的数据与其余数据一起成功保存在数据库中 .
我已成功将所有已保存的数据拉回到编辑表单中,除了published_date字段 .
我尝试使用与其他字段相同的格式,例如 Headers ,如下所示
{!! 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 回答
我所做的是将
Form::input('date', 'published_at', ...
行相关的段替换为以下代码部分(指的是Laracast Partials和Forms Reuse教程):在上面替换的代码部分
(isset($article) && $article->published_at ? $article->published_at : date('Y-m-d'))
将检查表单是否已给出$article
对象,因此使用其现有的published_at
日期或其他明智的创建日期与当前时间并使用它 .希望这对那里的人有所帮助 .
在其他任何人都有类似的问题 - 我现在找到了解决方案,这简直令人尴尬!
我更改了日期字段如下:
因此,字段的默认值是从我的数据库中提取的值(我可以在问题中详述的页面中的其他位置访问该值) . 当我提交表单时,日期仍然是数据库中的值,除非我更改表单值,在这种情况下它会更新 .
不知道这是否是正确的或推荐的方式(并且仍然不同于我如何完成其他字段),但似乎可以做到这一点!
显然这个问题已经关闭,但也许它可以帮助某人 . 我正在使用表单进行编辑和创建,因此我执行了以下操作: