Laravel中的验证错误-$errors数组在验证失败后未填充
我在Laravel5.2中遇到了一个关于验证的奇怪问题。我回顾了有关StackOverflow的以下问题,但似乎没有一个适用于我的案例: 问题是,在将Laravel中的验证错误-$errors数组在验证失败后未填充,laravel,laravel-5,laravel-5.2,laravel-validation,Laravel,Laravel 5,Laravel 5.2,Laravel Validation,我在Laravel5.2中遇到了一个关于验证的奇怪问题。我回顾了有关StackOverflow的以下问题,但似乎没有一个适用于我的案例: 问题是,在将卡片对象持久化到数据库之前,我正在尝试验证标题字段。当我提交带有空title字段的表单时,正如预期的那样,它不会通过验证。但是,$errors数组不会在上述验证失败时填充。有人能解释一下我的代码哪里出了问题吗 //控制器///////////////////// 公共函数创建(请求$Request) { $this->validate$请求[
卡片
对象持久化到数据库之前,我正在尝试验证标题
字段。当我提交带有空title
字段的表单时,正如预期的那样,它不会通过验证。但是,$errors
数组不会在上述验证失败时填充。有人能解释一下我的代码哪里出了问题吗
//控制器/////////////////////
公共函数创建(请求$Request)
{
$this->validate$请求[
“title'=>”必填项|最小值:10”
]);
卡片::创建($request->all());
返回();
}
//视图/////////////////////////
//显示错误(如果有)。(从不触发)
@如果(计数($errors))
@foreach($errors->all()作为$error)
- {{$error}}
@endforeach
@恩迪夫
{{csrf_field()}}
//textarea也不会填充“old”值
{{old('title')}
添加卡
我想您必须将if子句设置为@if(count($errors)>0)
在控制器中,尝试添加$validator->fails()
语句,并使用->withErrors()
将任何错误返回到模板中
public function create(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|min:10'
]);
if ($validator->fails()) {
return back()->withErrors($validator);
}
Card::create($request->all());
return back();
}
如果您正在运行Laravel 5.2.27及更高版本,则不再需要使用web中间件组。事实上,您不应该将其添加到路由中,因为它现在默认自动应用 如果打开
app/Http/RouteServiceProvider.php
文件,您将看到以下代码:
protected function mapWebRoutes(Router $router)
{
$router->group([
'namespace' => $this->namespace, 'middleware' => 'web',
], function ($router) {
require app_path('Http/routes.php');
});
}
资料来源:
如您所见,它会自动为您应用web中间件。如果您尝试在routes文件中再次(不止一次)应用它,您将遇到一些奇怪的问题,比如您当前所面临的问题
为了找出您正在运行的Laravel的版本,请运行以下命令:
php artisan--version
@if(count($errors))
和@if(count($errors)>0)
是否可以附加routes.php
文件以及完整的控制器文件?不知何故,我相信会发生一些双重重定向,并且您的$errors
不会从一个重定向传递到另一个重定向。或者,如果您使用的是restful路由,create
方法不是放置存储函数的地方-store
是放置存储函数的地方。@GiedriusKiršys问题确实出在路由文件中,因为我两次包含了“web”中间件组(正如公认的答案所指出的)。谢谢你给我的关于休息路线的建议,我会记住的。哦,我的上帝!我会花很多时间来弄清楚的。非常感谢你!谢谢你的回复。结果是一样的,但是被接受的答案解决了我的问题