我正在编写编辑表单的逻辑,并且在输入中显示数据时会有一些复杂性。
当我最初显示表单时,我会显示记录值,如:
value="{{$dog->title}}"
然后当表单没有通过验证时,我需要显示旧输入,这样用户就不会丢失他已输入的内容。所以我需要一种方法来显示旧数据,如:
value="{{old('title')}}"
因为我需要输入旧数据以防它存在,我最终得到了这段代码:
value="{{$dog->title or old('title')}}"
在控制器中我检查Request是否有旧输入,我将$ dog var赋值为null。
我想问一下,这是否是一种好的做法,还是有更好的'正确'的方法呢?
答案 0 :(得分:31)
如果在会话中找不到旧数据,则功能旧具有默认参数。
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:yourUrlString]];
NSURLSession *session = [NSURLSession sharedSession];
task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (data) {
[self performSelectorOnMainThread:@selector(upadateCurrentTrack:) withObject:data waitUntilDone:NO];
}
}];
[task resume];
-(void)upadateCurrentTrack:(NSData *)data {
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithData:data error:NULL];
audioPlayer.delegate = self;
[audioPlayer prepareToPlay];
[audioPlayer play];
您可以使用
替换模板中的表达式function old($key = null, $default = null)
答案 1 :(得分:1)
我知道这已经得到了解答,但我想我将来会为其他人留下一点点狙击。
在@ikurcubic上设置输入的旧值:
<input type="text" name="name" value="{{ old('name', $DB->default-value) }}"
在select,单选按钮上设置旧值:写一个小的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>
<option value="Marly" {{ $option == 'Marly' ? selected : '' }}>Marly</option>
</select>
单选按钮也是如此:
@php
if(old('gender') !== null){
$option = old('gender');
}
else{ $option = $database->value; }
@endphp
<input type="radio" name="gender" value="M" {{ $option == "M" ? 'checked' : '' }} />
<label>Male</label>
<input type="radio" name="gender" value="F" {{ $option == "F" ? 'checked' : '' }} />
<label>Female</label>
使用数组名称设置输入的旧值,例如name []:
value="{{ old('name.0) }}"
这将为您提供索引为0
的输入的旧值我测试了这个并且它有效,我希望它可以帮助某人。
答案 2 :(得分:0)
你做事的方式没有错,因为Laravel提供了多种方法来处理你所描述的情况。
我建议使用Laravel Collective Form和HTML包来构建表单。如果验证失败,此包将自动处理将旧请求值绑定到表单
答案 3 :(得分:0)
我在我的申请中解决了这个问题 如果要获取输入中以前的旧插入值,则应尝试使用此值 我确实喜欢这个
function SaveData(Request $request)
{
$sValidationRules = [
'firstname' => 'required',
'lastname' => 'required',
'email' => 'required',
'phone' => 'required',
];
$validator = Validator::make($request->all(), $sValidationRules);
if ($validator->fails()) // on validator found any error
{
// pass validator object in withErrors method & also withInput it should be null by default
return redirect('Your Route Hare')->withErrors($validator)->withInput();
}
Employee::create($request->all());
return redirect(' your route hare ');
}
&之后,然后使用{{Request :: old('firstname')}}在输入字段值中获取旧数据 编码愉快。 :)
<input type="text" name="firstname" id="firstname" value="{{ Request::old('firstname') }}" class="form-control" placeholder="First Name">
答案 4 :(得分:0)
另一种方法是从dog
类中获取数据,如下所示:
value="{{old('title') ?? $dog->title }}"
为什么?因为old()
用于验证;验证失败时,输入将在字段中保持可用。在尚未触发验证的情况下,value
将充满$dog->title
。
答案 5 :(得分:0)
旧数据:输入类型 文本 | 电话 | 编号 | 。。。
<input type="text" name="my_text" value="{{old('my_text')}}">
旧数据:输入类型 复选框 | 无线电
<input type="checkbox" {{ old('my_checkbox') == 'on' ? 'checked' : '' }} name="my_checkbox">