nan*_*eri 19 validation laravel laravel-blade
我正在为编辑表单编写逻辑,并且在输入中显示数据时会有一些复杂性.
当我最初显示表单时,我显示的记录值如下:
value="{{$dog->title}}"
Run Code Online (Sandbox Code Playgroud)
然后当表单没有通过验证时,我需要显示旧的输入,这样用户就不会丢失他已输入的内容.所以我需要有一种方法来显示旧数据,如:
value="{{old('title')}}"
Run Code Online (Sandbox Code Playgroud)
因为我需要输入旧数据以防它存在,我最终得到了这段代码:
value="{{$dog->title or old('title')}}"
Run Code Online (Sandbox Code Playgroud)
在控制器中我检查Request是否有旧输入,我将$ dog var指定为null值.
我想问一下这是否是一种好的做法,还是有更好的"正确"方法呢?
iku*_*bic 58
如果在会话中找不到旧数据,则函数old具有默认参数.
function old($key = null, $default = null)
Run Code Online (Sandbox Code Playgroud)
您可以用模板替换模板中的表达式
value="{{old('title', $dog->title)}}"
Run Code Online (Sandbox Code Playgroud)
Jel*_*ean 17
我知道这已经得到了回答,但我想我将来会在这里为其他人留下一些片段。
在输入上设置旧值作为@ikurcubic 发布可以在单选按钮或选择上以相同的方式使用:
<input type="text" name="name" value="{{ old('name', $DB->default-value) }}" />
Run Code Online (Sandbox Code Playgroud)
选择选项:
<option value="Jeff" {{ old('name', $DB->default-value) == 'Jeff' ? 'selected' : '' }}>Jeff</option>
Run Code Online (Sandbox Code Playgroud)
单选按钮:
<input type="radio" name="gender" value="M" {{ old('name', $DB->default-value)== "M" ? 'checked' : '' }} />
Run Code Online (Sandbox Code Playgroud)
另一种方法;写一个小的 if 语句来确定应该评估哪个值:
@php
if(old('name') !== null){
$option = old('name');
}
else{ $option = $database->value; }
@endphp
<select name="name">
<option value="Bob" {{ $option == 'Bob' ? 'selected' : '' }}>Bob</option>
<option value="Jeff" {{ $option == 'Jeff' ? 'selected' : '' }}>Jeff</option>
</select>
<input type="radio" name="gender" value="M" {{ $option == "M" ? 'checked' : '' }} />
<input type="radio" name="gender" value="F" {{ $option == "F" ? 'checked' : '' }} />
Run Code Online (Sandbox Code Playgroud)
使用数组名称设置输入的旧值,例如 name="name[]":
<input type="text" name="name[]" value="{{ old('name.0) }}" />
Run Code Online (Sandbox Code Playgroud)
这将为您提供索引为 0 的输入的旧值。
我已经测试过这个并且它有效。
小智 5
另一种方法是从dog
类中获取数据,如下所示:
value="{{old('title') ?? $dog->title }}"
Run Code Online (Sandbox Code Playgroud)
为什么?因为old()
是为了验证;当您验证失败时,输入将在该字段中保持可用。在验证尚未触发的情况下, value
将填充$dog->title
.