【发布时间】:2016-07-29 23:11:55
【问题描述】:
我在 Laravel 5.2 中遇到了一个关于验证的奇怪问题。我在 StackOverflow 上查看了以下问题,但似乎都不适用于我的案例:
Laravel validation not showing errors
Laravel Validation not returning error
问题是,我正在尝试验证 title 字段,然后将 Card 对象持久保存到数据库中。当我按预期提交带有空 title 字段的表单时,它没有通过验证。但是,$errors 数组在上述验证失败时不会被填充。谁能解释这段代码我哪里出错了?
/////////////////////// CONTROLLER /////////////////////
public function create(Request $request)
{
$this->validate($request, [
'title' => 'required|min:10'
]);
Card::create($request->all());
return back();
}
///////////////////////// VIEW /////////////////////////
// Show errors, if any. (never gets triggered)
@if(count($errors))
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
<form method="POST" action="/cards">
{{ csrf_field() }}
<div class="form-group">
// The textarea does not get populated with the 'old' value as well
<textarea class="form-control" name="title">{{ old('title') }}</textarea>
</div>
<div class="form-group">
<button class="btn btn-primary" type="submit">Add Card</button>
</div>
</form>
【问题讨论】:
-
您能否附上您的
routes.php文件以及完整的控制器文件?不知何故,我相信会发生一些双重重定向,并且您的$errors不会从一个重定向传递到另一个重定向。或者,如果您使用的是 restful 路由,create方法不是放置存储功能的地方 -store是地方。 -
@GiedriusKiršys 问题确实出在路由文件中,因为我两次包含“web”中间件组(正如接受的答案指出的那样)。感谢关于宁静路线的建议,会记住的。
标签: laravel laravel-5 laravel-5.2 laravel-validation