Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Páginas de login e registro de novos usuários Erro.

Boa tarde.

Ao acessar o login ou o register, é apresentado o seguinte erro.

ErrorException in 2c3b4d24b8e7c1a44c6b725e9ebf0f91cc76ee97.php line 12: Undefined variable: errors (View: C:\Users\fabia\SF\estoque\resources\views\auth\login.blade.php)

routes.php

<?php
Route::get('/', 'ProdutoController@lista');
Route::get('/produtos', 'ProdutoController@lista');
Route::get('/produtos/mostra/{id}', 'ProdutoController@mostra');
Route::get('/produtos/novo', 'ProdutoController@novo');
Route::post('/produtos/adiciona', 'ProdutoController@adiciona');
Route::get('/produtos/json', 'ProdutoController@listaJson');
Route::get('/produtos/remove/{id}', 'ProdutoController@remove');
Route::get('/login', 'LoginController@form');
Route::post('/login/acesso', 'LoginController@login');

Route::controllers([
    'auth' => 'Auth\AuthController',
    'password' => 'Auth\PasswordController',
]);

principal.blade.php

<html>
<head>
    <link href="/css/app.css" rel="stylesheet">
    <link href="/css/custom.css" rel="stylesheet">
    <title>Controle de estoque</title>
</head>
<body>

  <div class="container">
    <ul class="nav navbar-nav navbar-right">
      @if(Auth::guest())
        <li><a href="/auth/login">Login</a></li>
        <li><a href="/auth/register">Register</a></li>
      @else
        <li>{{ Auth::user()->name }}</li>
        <li><a href="/auth/logout">Logout</a></li>
      @endif
    </ul>
  </div>

  <div class="container">

  <nav class="navbar navbar-default">
    <div class="container-fluid">

    <div class="navbar-header">      
      <a class="navbar-brand" href="/produtos">Estoque Laravel</a>
    </div>

    <ul class="nav navbar-nav navbar-right">
        <li><a href="{{action('ProdutoController@lista')}}">Listagem</a></li>
        <li><a href="{{action('ProdutoController@novo')}}">Novo</a></li>
    </ul>

    </div>
  </nav>

  @yield('conteudo')

  <footer class="footer">
      <p>© Curso de Laravel do Alura.</p>
  </footer>

  </div>
</body>
</html>
4 respostas

Olá Fabiano, tudo bom?

Seu erro diz que não foi encontrada a variavel errors no arquivo Login.blade.php.

Compartilha com a gente seu LoginController.php e Login.Blade.php pra podermos analisar melhor =)

LoginController.php

<?php

namespace estoque\Http\Controllers;

use estoque\Http\Requests;
use Auth;
use Request;

class LoginController extends Controller{

    public function form(){
        return view('layout.form-login');
    }

    public function login(){
        $credenciais = Request::only('email', 'password');

        if(Auth::attempt($credenciais)){
            return "Usuario ". Auth::user()->nome ."logado com sucesso";
        }

        return "Usuario não cadastrado";
    }
}

views\auth\Login.blade.php

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="panel panel-default">
                <div class="panel-heading">Login</div>
                <div class="panel-body">
                    <form class="form-horizontal" role="form" method="POST" action="{{ url('/login') }}">
                        {{ csrf_field() }}

                        <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
                            <label for="email" class="col-md-4 control-label">E-Mail Address</label>

                            <div class="col-md-6">
                                <input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}">

                                @if ($errors->has('email'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('email') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
                            <label for="password" class="col-md-4 control-label">Password</label>

                            <div class="col-md-6">
                                <input id="password" type="password" class="form-control" name="password">

                                @if ($errors->has('password'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('password') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group">
                            <div class="col-md-6 col-md-offset-4">
                                <div class="checkbox">
                                    <label>
                                        <input type="checkbox" name="remember"> Remember Me
                                    </label>
                                </div>
                            </div>
                        </div>

                        <div class="form-group">
                            <div class="col-md-6 col-md-offset-4">
                                <button type="submit" class="btn btn-primary">
                                    <i class="fa fa-btn fa-sign-in"></i> Login
                                </button>

                                <a class="btn btn-link" href="{{ url('/password/reset') }}">Forgot Your Password?</a>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

Parece que ele aponta o erro para o token, mas o login é o padrão do Laravel. O mesmo erro é apresentado para o regiter, e curiosamente no mesmo local tem o campo do token.

views\auth\register.blade.php

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="panel panel-default">
                <div class="panel-heading">Register</div>
                <div class="panel-body">
                    <form class="form-horizontal" role="form" method="POST" action="{{ url('/register') }}">
                        {{ csrf_field() }}

                        <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
                            <label for="name" class="col-md-4 control-label">Name</label>

                            <div class="col-md-6">
                                <input id="name" type="text" class="form-control" name="name" value="{{ old('name') }}">

                                @if ($errors->has('name'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('name') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
                            <label for="email" class="col-md-4 control-label">E-Mail Address</label>

                            <div class="col-md-6">
                                <input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}">

                                @if ($errors->has('email'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('email') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
                            <label for="password" class="col-md-4 control-label">Password</label>

                            <div class="col-md-6">
                                <input id="password" type="password" class="form-control" name="password">

                                @if ($errors->has('password'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('password') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group{{ $errors->has('password_confirmation') ? ' has-error' : '' }}">
                            <label for="password-confirm" class="col-md-4 control-label">Confirm Password</label>

                            <div class="col-md-6">
                                <input id="password-confirm" type="password" class="form-control" name="password_confirmation">

                                @if ($errors->has('password_confirmation'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('password_confirmation') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group">
                            <div class="col-md-6 col-md-offset-4">
                                <button type="submit" class="btn btn-primary">
                                    <i class="fa fa-btn fa-user"></i> Register
                                </button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

Beleza, seu código está todo certo! Essa variável errors deveria ser criada automaticamente pelo proprio framework. Entretanto, a partir da versão 5.2 houve uma atualização da middleware que foi movida de global para web. Verifique qual versão você está utilizando e se sua versão for a 5.2 tente resolver movendo suas rotas para web:

Route::group(['middleware' => 'web'], function() {
Route::get('/', 'ProdutoController@lista');
//outras rotas
});
// resto do arquivo

Outra possivel solução é editar seu kernel.php na pasta app/Http/ e adicionar \Illuminate\View\Middleware\ShareErrorsFromSession::class de volta no protected $middleware:

protected $middleware = [
\Illuminate\View\Middleware\ShareErrorsFromSession::class,

// resto do atributo

];
solução!

A solução proposta não funcionou.

Acabei criando novamente a estutura do auth com o comando:

php artisan make:auth

Obrigado pela assistência.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software