验证错误未存储在我的Laravel 5.2应用程序上(新安装,未升级)。此外,$old('value')
不会在验证失败后保留这些值。
我所有的路由都包含在web
中间件中,我还尝试将 Web 中间件内容移动到 Kernel.php
中的全局$middleware
变量中。
我还尝试在 artisan 中清除我的路由缓存,并在控制器顶部包含use Illuminate'Foundation'Validation'ValidationException
,看看我是否可以让它工作。似乎验证正在处理,只是没有将其存储在会话中/抛出异常。我这样说是因为Session::flash
的工作方式也不相同,而且只要 cookie 说它这样做,用户记住我功能似乎就不会存储,因为我需要在大约 6 小时后重新登录。
设置(我有"常规"公共路线,然后是员工路线:
Route::group(['middleware' => ['web']], function () {
// Basic Route...
$this->get('/', 'PublicController@index');
// Staff Route...
Route::group(['middleware' => 'staff'], function () {
$this->get('/staffpanel', 'Staff'StaffController@showStaffPanel');
});
});
内核.php
namespace App'Http;
use Illuminate'Foundation'Http'Kernel as HttpKernel;
class Kernel extends HttpKernel
{
protected $middleware = [
'Illuminate'Foundation'Http'Middleware'CheckForMaintenanceMode::class,
'App'Http'Middleware'EncryptCookies::class,
'Illuminate'Cookie'Middleware'AddQueuedCookiesToResponse::class,
'Illuminate'Session'Middleware'StartSession::class,
'Illuminate'View'Middleware'ShareErrorsFromSession::class,
'App'Http'Middleware'VerifyCsrfToken::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'View'Middleware'ShareErrorsFromSession::class,
'App'Http'Middleware'VerifyCsrfToken::class,
],
'api' => [
'throttle:60,1',
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'staff' => 'App'Http'Middleware'Staff::class,
'auth' => 'App'Http'Middleware'Authenticate::class,
'auth.basic' => 'Illuminate'Auth'Middleware'AuthenticateWithBasicAuth::class,
'guest' => 'App'Http'Middleware'RedirectIfAuthenticated::class,
'throttle' => 'Illuminate'Routing'Middleware'ThrottleRequests::class,
];
}
验证代码段:
protected function validatorMakeCategory(array $data) {
return Validator::make($data, [
'name' => 'required|max:50|unique:categories',
'description' => 'max:255',
]);
}
public function postCreateCategory(Request $request) {
$validator = $this->validatorMakeCategory($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
}
视图中的错误/会话(两者都不显示):
@if(Session::has('message'))
<p class="alert {{ Session::get('alert-class', 'alert-info') }}">{{ Session::get('message') }}</p>
@endif
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
我遇到了同样的问题,我解决了删除'App'Http'Middleware'VerifyCsrfToken::class
,在受保护的$middleware
和我的路由中,函数()Route::group(['middleware' => ['web']]
,但我不知道以后是否会有任何问题。