【发布时间】:2021-07-17 15:19:39
【问题描述】:
我将项目从存储库拉到本地环境。我遇到了验证消息不显示在刀片上的问题。
在我的控制器函数中,我可以像这样转储验证错误:
$validator = Validator::make($request->all(), [
'first_name' => 'required|min:3',
]);
if ($validator->fails()) {
dd($validator);
return redirect()->back()->withErrors($validator)->withInput();
}
我花了一些时间搜索可能导致此问题的原因,并发现一些结果表明我的问题可能与网络中间件相关。
最初,我的文件如下所示:
路由服务提供者
protected function mapWebRoutes()
{
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
}
内核
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\TrustProxies::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
web.php
Route::get('register', 'Auth\RegisterController@getRegister');
Route::post('register', 'AuthController@postRegister');
我尝试将我的路由包装在这样的网络中间件中:
Route::group(['middleware' => ['web']], function () {
Route::get('register', 'Auth\RegisterController@getRegister');
Route::post('register', 'AuthController@postRegister');
});
我还尝试将 StartSession::class 和 ShareErrorsFromSession::class 从 middlewareGroups 移动到中间件并从 mapWebRoutes 中删除中间件('web'),但问题仍然存在。也许有人遇到了同样的问题并且能够解决它?
我的 Laravel 版本是:5.7.29,php 版本是:7.1.33
生产验证工作
【问题讨论】:
-
如何在刀片上显示错误?
-
你忘了放最重要的部分.....视图
-
我没有包含视图部分,因为它正在生产中,所以我认为它没有在刀片中显示的内容。
标签: php laravel validation