2
respostas

TokenMismatchException in VerifyCsrfToken.php line 68:

Estou utilizando a versão 5.4 do Laravel e ao tentar adicionar um produto usando o create do eloquent, o tenho o seguinte erro: "TokenMismatchException in VerifyCsrfToken.php line 68:" Gostaria de ajuda em relação a qual configuração devo mudar.

Arquivo de Rotas


<?php

Route::get('/', function()
{
  return '<h1>Primeira lógica com Laravel</h1>';
});

Route::get('/produtos', 'ProdutoController@lista');

Route::get('/produtos/mostra/{id}', 'ProdutoController@mostra')->where('id', '[0-9]+');

Route::get('/produtos/novo', 'ProdutoController@novo');

Route::post('/produtos/adiciona', 'ProdutoController@adiciona');

ProdutoController

<?php 
namespace App\Http\Controllers;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use Request;
use App\Produto;

class ProdutoController extends Controller{

    public function lista(){

        $produtos = Produto::all();

        return view('produto/listagem')->with('produtos', $produtos);
    }



    public function mostra($id){

        $resposta = produto::find($id);

        if(empty($resposta)) {
            return "Esse produto não existe";
          }
          return view('produto/detalhes')->with('p', $resposta);
    }


    public function novo(){

        return view('produto/formulario');
    }


    public function adiciona(){
        // pegar dados do formulario
        Produto::create(Request::all());

        // retornar alguma view
        return redirect()->action('ProdutoController@lista')->withInput(Request::only('nome'));

    }
}

?>

Layout Principal

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="http://kingstecnologia.com.br/estoque/public/css/bootstrap.min.css">
    <link rel="stylesheet" href="http://kingstecnologia.com.br/estoque/public/css/custom.css">
    <title>Controle de Estoque</title>
</head>
<body>
<div class="container">

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

    <div class="navbar-header">      
      <a class="navbar-brand" href="http://kingstecnologia.com.br/estoque/public">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>© Livro de Laravel do Alura.</p>
  </footer>

  </div>


</body>
</html>

Fomulário


@extends('layout/principal')

@section('conteudo')

<h1>Novo Produto</h1>

<form action="http://kingstecnologia.com.br/estoque/public/produtos/adiciona" method="post">
    <!--<input type="hidden" name="_token" value="{{{ csrf_token() }}}"/>-->
    <div class="form-group">
    <label>Nome</label>
    <input class="form-control" type="text" name="nome"/>

    <label>Descrição</label>
    <input class="form-control" type="text" name="descricao"/>

    <label>Valor</label>
    <input class="form-control" type="number" name="valor"/>

    <label>Quantidade</label>
    <input class="form-control" type="number" name="quantidade"/>

    <button type="submit">Cadastrar</button>
    </div>
</form>

@stop
2 respostas

O campo do token está comentado no teu formulário:

 <!--<input type="hidden" name="_token" value="{{{ csrf_token() }}}"/>-->

Retire os comentários e teste novamente

<input type="hidden" name="_token" value="{{{ csrf_token() }}}" />

Daniel desculpe o engano, está comentado por que estava testando uma outra solução que busquei na internet. Mas mesmo não comentado o erro é o mesmo;


@extends('layout/principal')

@section('conteudo')

<h1>Novo Produto</h1>

<form action="http://kingstecnologia.com.br/estoque/public/produtos/adiciona" method="post">
    <input type="hidden" name="_token" value="{{{ csrf_token() }}}"/>
    <div class="form-group">
    <label>Nome</label>
    <input class="form-control" type="text" name="nome"/>

    <label>Descrição</label>
    <input class="form-control" type="text" name="descricao"/>

    <label>Valor</label>
    <input class="form-control" type="number" name="valor"/>

    <label>Quantidade</label>
    <input class="form-control" type="number" name="quantidade"/>

    <input type="text" name="data" pattern="^([1-9]|0[1-9]|[1,2][0-9]|3[0,1])/([1-9]|1[0,1,2])/\d{4}$">

    <button type="submit">Cadastrar</button>
    </div>
</form>

@stop