gpt4 book ai didi

laravel - Laravel 中的验证错误 - 验证失败后未填充 $errors 数组

转载 作者:行者123 更新时间:2023-12-03 18:15:44 24 4
gpt4 key购买 nike

我在 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>

最佳答案

如果您运行的是 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');
});
}

来源: https://github.com/laravel/laravel/blob/master/app/Providers/RouteServiceProvider.php#L53

如您所见,它会自动为您应用 Web 中间件。如果您尝试在路由文件中再次(多次)应用它,您将遇到像您当前面临的问题一样的奇怪问题。

为了找出您正在运行的 Laravel 版本,请运行以下命令: php artisan --version

关于laravel - Laravel 中的验证错误 - 验证失败后未填充 $errors 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36503825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com