Laravel 4 - 显示具有OLD数据输入和DB信息的编辑表单

时间:2014-05-20 14:37:54

标签: laravel laravel-4

我为我的应用程序制作了一个编辑表单,我想知道是否有人可以告诉我如何将数据库中的数据导入我的文本字段。

我可以根据用户点击找到我需要编辑的记录,如果我执行以下操作,我可以显示信息:

value="{{ $letter->subject }}"

但是,我遇到的问题是,当我通过验证运行并且出现错误时,它会返回数据库信息而不是OLD数据。

所以我的问题是。有没有办法首先提供数据库信息,然后当它通过验证器时,验证用户编辑的信息?

目前要验证文本字段并将数据带回错误,即时使用

Input::old('subject')

是否有一个旧位参数允许我输入数据库数据?

干杯,

4 个答案:

答案 0 :(得分:10)

嘿,你可以验证并返回 - > gt; withInput()然后以你的实际形式,检查是否有Input :: old()并显示它,否则从db显示。

示例:

<input type="text" name="subject" 
value="{{ (Input::old('subject')) ? Input::old('subject') : $letter->subject }}">

或者您可以采用另一种方式定义变量并执行常规if语句,而不是三元语句!由你来决定你想要用什么!

答案 1 :(得分:7)

您只需要表单模型绑定http://laravel.com/docs/html#form-model-binding

{{ Form::model($letter, ['route' => ['letters.update', $letter->id], 'method' => 'put']) }}
   // your fields like:
   {{ Form::text('someName', null, ['class' => 'someHTMLclass' ...]) }}
   // no default values like Input::old or $letter->something!
{{ Form::close() }}

这种形式将由$ letter数据填充(例如从控制器传递)。

现在,如果你有你的议员:

// in case of invalid data
return Redirect::back()->withInput();

然后在重定向上,您的表单将首先使用输入值重新填充,而不是原始模型数据。

答案 2 :(得分:3)

让它变得更简单和干净

<input type="text" name="subject" value="{{ (Input::old('subject')) ?: $letter->subject }}">

答案 3 :(得分:0)

我不确定Laravel 4但是在Laravel 5中,函数需要第二个参数,如果会话中没有旧数据,则为默认值。

请检查此回答Best practice to show old value