验证失败后,laravel显示旧post数据
我正在尝试更新一篇文章,为此我有一个带有以下标记的表单验证失败后,laravel显示旧post数据,laravel,forms,validation,Laravel,Forms,Validation,我正在尝试更新一篇文章,为此我有一个带有以下标记的表单 服务名称 提交 最初,当表单打开时,它应该显示为{{$service->name}的模型值,一旦表单提交,如果验证失败,它必须显示旧的输入 问题是当输入为空时,逻辑{{old('name')?old('name'):$service->name} 计算结果为false,并显示$service->name,而不是空值 我的控制器代码 公共功能更新($id,Request$Request) { $validatedData=$request
服务名称
提交
最初,当表单打开时,它应该显示为{{$service->name}的模型值,一旦表单提交,如果验证失败,它必须显示旧的输入
问题是当输入为空时,逻辑{{old('name')?old('name'):$service->name}
计算结果为false,并显示$service->name
,而不是空值
我的控制器代码
公共功能更新($id,Request$Request)
{
$validatedData=$request->validate([
“名称”=>“必填项|最大值:255 |最小值:5”
]);
$service=service::find($id);
$service->name=$request->input('name');
$service->save();
返回重定向(admin_url('services'))->带有('message','Service updated successfully');
}
您需要使用验证程序::make()
方法
$validator = Validator::make($request->all(), [
'name' => 'required|min:2|max:255'
]);
if ($validator->fails()) {
return Redirect::back()->withErrors($validator)->withInput();
} else {
return redirect(admin_url('services'))->with('message', 'Service updated successfully');
}
Laravel包括一个中间件,用于将空字符串(如名称输入)转换为null,因此始终显示
$service->name
您可以在App\Http\Kernel
中删除/注释该中间件,并在初始表单加载时仅显示$service->name
protected$middleware=[
\App\Http\Middleware\TrustProxies::类,
\App\Http\Middleware\CheckFormIntenanceMode::class,
\Illumb\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
//下面这个
//\Illumb\Foundation\Http\Middleware\ConvertEmptyStringsToull::class,
];
然后在标记中
希望这有帮助如果会话中没有使用该名称的值,您可以将默认值传递给函数 替换
{{ old('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>
服务名称
提交
尝试{{old('name',$service->name)}}
当验证失败时,控制器中重定向回表单的语句是什么?请添加控制器代码。嗨,Digvijay,我已经添加了控制器代码,你能帮我吗out@user3209130你能试试Validator::make()
方法吗,因为它有一个方法失败()
@user3209130我的代码解决了你的问题吗?也不起作用,我认为,当对请求对象调用验证时,laravel会自动触发Redirect::back()->withErrors($validation)->withInput();基于上述@user3209130的逻辑是否不正常?检查发生的任何错误。
{{ 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>