在我的 laravel 应用程序中,验证错误不会显示在视图中。我怎样才能实现它?
Posted
技术标签:
【中文标题】在我的 laravel 应用程序中,验证错误不会显示在视图中。我怎样才能实现它?【英文标题】:In my laravel application, validation errors are not getting displayed in the view. How can i achieve it? 【发布时间】:2019-06-02 11:54:30 【问题描述】:我正在使用 Laravel 框架 5.8.15。我正在验证我的一些表单输入。验证器失败后,它会将我重定向回视图,但不显示任何错误。
我的控制器是:
public function store(Request $request)
$this->validate($request, [
'donator_first_name' => 'required|alpha|max:50',
'donator_middle_name' => 'required|alpha|max:50',
]);
donations::create([
'donator_first_name' => $request->get('donator_first_name'),
'donator_middle_name'=> $request->get('donator_middle_name')
]);
return back()->with('success', 'You have just created one item');
我的表格是:
<div class="form-group">
<label>Donator's Surname: </label>
<input class="form-control" id="donator_last_name" name="donator_last_name" placeholder="Enter Surname" required>
</div>
<div class="form-group">
<label>Donator's First Name: </label>
<input class="form-control" id="donator_first_name" name="donator_first_name" placeholder="Enter First Name" required>
</div>
<div class="form-group">
<label>Donator's Father's Name: </label>
<input class="form-control" id="donator_middle_name" name="donator_middle_name" value=" old('donator_middle_name') " placeholder="Enter Father's Name" required>
</div>
我的看法是:
@if ($errors->any())
dd($errors)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li> $error </li>
@endforeach
</ul>
</div>
@endif
@if (\Session::get('success'))
<div class="alert alert-success">
<p> \Session::get('success') </p>
</div>
@endif
【问题讨论】:
【参考方案1】:你的代码似乎没问题。不要忘记将 csrf_field() 添加到表单中。
在视图上试试这个:
@if (count($errors) > 0)
<div class="alert alert-danger alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span>
</button>
<strong>Error!</strong>
@foreach ($errors->all() as $error)
<p> $error </p>
@endforeach
</div>
@endif
@if(session('success'))
<div class="alert alert-info alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span>
</button>
<strong>Successfull!</strong>
session('success')
</div>
@endif
@if(session('wrong'))
<div class="alert alert-danger alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span>
</button>
<strong>Error!</strong>
session('wrong')
</div>
@endif
然后你的控制器试试这个:
return redirect("urlpath")->with('success','You have just created one item');
【讨论】:
感谢您的回复!但它在视图中显示为空。 @samju 我找不到它没有向我显示会话数据的原因。如果我在控制器中打印会话,它会显示,但它不会在视图中显示。 在你的控制器上试试这个'use Session;' 是的,它显示警报(因为我已经删除了 if 条件)但为空。不显示任何消息【参考方案2】:我在表单提交操作中调用 API。这就是为什么我无法在我的视图中获得会话。
【讨论】:
以上是关于在我的 laravel 应用程序中,验证错误不会显示在视图中。我怎样才能实现它?的主要内容,如果未能解决你的问题,请参考以下文章
在我的 Inertia laravel 应用程序中获取 View [app] not found 错误
我最近在我的 laravel 项目中使用了 JCrop,但是虽然我选择了一张照片并加载了它,但我得到了验证错误 image is requred