laravel - laravel 验证失败后显示旧的帖子数据
问题描述
我正在尝试更新帖子,为此我有以下标记的表格
<form method="post" action="{{ admin_url('services/'.$service->id) }}">
<input name="_method" type="hidden" value="PATCH">
<div class="form-group">
<label for="name">Service Name</label>
<input type="text" class="form-control" id="name" name="name"
value="{{ old('name') ? old('name') : $service->name }}">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
最初,当表单打开时,它应该显示模型值 {{$service->name}} 并且一旦提交表单并且如果验证失败,它必须显示旧输入
问题是当输入为空时,逻辑{{ old('name') ? old('name') : $service->name }}
评估为假并$service->name
显示而不是空值。
我的控制器代码
public function update($id, Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:255|min:5'
]);
$service = Service::find($id);
$service->name = $request->input('name');
$service->save();
return redirect(admin_url('services'))->with('message', 'Service updated successfully');
}
解决方案
如果会话中没有具有该名称的值,您可以将默认值传递给将使用的旧函数。
更换
{{ old('name') ? old('name') : $service->name }}
和
{{ old('name', $service->name) }}
应该能解决你的问题。
完整代码:
<form method="post" action="{{ admin_url('services/'.$service->id) }}">
<input name="_method" type="hidden" value="PATCH">
<div class="form-group">
<label for="name">Service Name</label>
<input type="text"
class="form-control"
id="name"
name="name"
value="{{ old('name', $service->name) }}">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
推荐阅读
- c - 错误:gcc 中“wstat”的类型冲突
- javascript - 如何以正确的方式更新对象值
- scala - 一种创建状态和 IO 单子堆栈实例的优雅方法
- node.js - 调用多个 AWS Lambda 不会产生并行进程
- reactjs - 无法更改 React JS 中的文本框值
- ios - 是否有一种 Swift 方法可以根据 cellLayoutMarginsFollowReadableWidth 缩进导航栏的大标题?
- outlook - Office.context.mailbox.item.itemId 很短?为什么?
- html - Bootstrap 的导航栏切换器使我的内容向下移动
- mysql - 如何设计架构,向其所有者显示消息,但如果未指定所有者,则向所有用户显示?
- sql - influx中如何实现如下sql查询?