fun*_*err 6 php laravel blade laravel-5
这是我的login.blade.php
@if(Session::get('errors')||count( $errors ) > 0)
@foreach ($errors->all() as $error)
<h1>{{ $error }}</h1>
@endforeach
@endif
Run Code Online (Sandbox Code Playgroud)
这是我的LoginController.php:
protected function sendFailedLoginResponse(Request $request)
{
return redirect()->back()
->withInput($request->only($this->username(), 'remember'))
->withErrors([
$this->username() => 'ERRORS',
]);
}
Run Code Online (Sandbox Code Playgroud)
这是我的web.php(路由)
// I am customizing the login to do extra checks,
// but I still need the basic auth scaffolding.
Auth::routes();
...
Route::group(['middleware' => 'web'], function () {
Route::view('/login', 'auth.login');
Route::post('/login', 'Auth\LoginController@login')->name('login');
});
Run Code Online (Sandbox Code Playgroud)
当我尝试以错误的用户身份登录时,视图中没有显示错误,这是我做错了什么?
更新:
我试图更改login.blade.php,就像@Seva Kalashnikov所建议的那样,没有运气。
我也尝试过@Akshay Kulkarni的建议,但没有运气。
尝试Session::get('errors')从iflogin.blade.php 中的语句中删除
@if(count( $errors ) > 0)
@foreach ($errors->all() as $error)
<h1>{{ $error }}</h1>
@endforeach
@endif
Run Code Online (Sandbox Code Playgroud)
ShareErrorsFromSession中间件,由 web 中间件组提供,负责$error视图变量,因此它将始终被定义(链接在这里)
[更新]
正如@Ohgodwhy 所指出的,你需要使用@if ($errors->any()) Example
所以在你的情况下,它将是:
@if($errors->any())
@foreach ($errors->all() as $error)
<h1>{{ $error }}</h1>
@endforeach
@endif
Run Code Online (Sandbox Code Playgroud)
好吧,几个小时后我终于找到了!我从头开始创建了一个 Laravel 项目,并进行了比较以找到罪魁祸首:
在app/Http/Kernel.php中,确保删除 StartSession 中间件:
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,
\Illuminate\Session\Middleware\StartSession::class, // <-- Remove this
];
Run Code Online (Sandbox Code Playgroud)
说明:我把它放在那里是因为我读到我必须将它作为中间件(如果我没有Route::group(['middleware' =>'web']在 web.php 中使用包装器),我想我把它忘在那里了。我认为将其放在那里并使用 web.php 中的包装器会在错误会话到达视图之前以某种方式截断它。