Laravel $错误刀片不显示

问题描述 投票:0回答:1

在刀片只会验证,但不会显示错误我的登录表单,它返回到登录与失败后空白条目页面,我怎么去呢?

最初,我的路线是在api.php定义,并得到同样的问题,所以我改成了web.php和仍然相同。还值=“{{老(‘名’)}}”太没有作用。

下面是我在写刀片的形式

<h5>Login Your Account</h5>    
        <!-- FORM -->
        @if ($errors->any())
          <div class="alert alert-danger">
              <ul>
                  @foreach ($errors->all() as $error)
                      <li>{{ $error }}</li>
                  @endforeach
              </ul>
          </div>
      @endif
        <form method="POST" action="/login" >
        {{ csrf_field() }}
              <div class="form-group">
                  <label for="name">Name</label>
                  <input type="text" id="name" class="form-control" name="name" placeholder="" value="{{old('name')}}">
                  @if ($errors->has('name')) <p class="help-block">{{ $errors->first('name') }}</p> @endif
              </div>


              <div class="form-group ">
                  <label for="password">Password</label>
                  <input type="password" id="password" class="form-control" name="password" value="{{old('password')}}">
                  @if ($errors->has('password')) <p class="help-block">{{ $errors->first('password') }}</p> @endif
              </div>



              <li class="col-sm-12 text-left">
              <button type="submit" class="btn-round">Login</button>
            </li>

          </form>

这里是我的控制器登录功能

public function login(Request $request){

    $validator= Validator::make($request->all(),
    ['name'=> "bail|required|max:50|exists:users",
    'password' => 'required|min:6|exists:users,password'
]
);

if ($validator->fails()){
    return redirect()->back()->withInput()->withError($validator);
}
else{
    if (Auth::attempt(['name'=> $request->name, 'password'=>$request->password])){
    return redirect('/home');
    }
}

这里是我的web.php路线

Route::get('/', function () {
return view('home');
});
Route::post('/login','API\userController@login');

而我kernel.php

<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
/**
 * The application's global HTTP middleware stack.
 *
 * These middleware are run during every request to your application.
 *
 * @var array
 */
protected $middleware = [
    \App\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,
        \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
    ],

    'api' => [
        'throttle:60,1',
        'bindings',
    ],
];

/**
 * The application's route middleware.
 *
 * These middleware may be assigned to groups or used individually.
 *
 * @var array
 */
protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
    'can' => \Illuminate\Auth\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];

/**
 * The priority-sorted list of middleware.
 *
 * This forces non-global middleware to always be in the given order.
 *
 * @var array
 */
protected $middlewarePriority = [
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    \App\Http\Middleware\Authenticate::class,
    \Illuminate\Session\Middleware\AuthenticateSession::class,
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
    \Illuminate\Auth\Middleware\Authorize::class,
];
}

如果验证成功,它重定向到我指定了路线,但一旦它失败指示返回到登录页面没有显示错误

php laravel
1个回答
2
投票

Laravel的RedirectResponse类有方法withErrors()发送验证信息用袋为您呼叫withError()

看到这个从Laravel的RedirectResponse.php

/**
     * Flash a container of errors to the session.
     *
     * @param  \Illuminate\Contracts\Support\MessageProvider|array|string  $provider
     * @param  string  $key
     * @return $this
     */
    public function withErrors($provider, $key = 'default')
    {
        $value = $this->parseErrors($provider);

        $this->session->flash(
            'errors', $this->session->get('errors', new ViewErrorBag)->put($key, $value)
        );

        return $this;
    }
© www.soinside.com 2019 - 2024. All rights reserved.