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

Duvida aula 6 parte 3

Verifiquei meu codigo e esta identico ao do professor, mas me volta o erro: "TokenMismatchException in VerifyCsrfToken.php line 67:" Quando tento adicionar um novo produto. Estou usando a versao 5.2 do Laravel.

11 respostas

Fábio

Posta o código da sua view, o controller e seu DAO por favor.

Codigo Formulario:

@extends('layout.principal')

@section('conteudo')

<div class="container">
<form action="/produtos/adiciona" method="post">

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

<div class="form-group">

<label>Nome</label>
<input name="nome" class="form-control">
</div>

<div class="form-group">

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

<div class="form-group">

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

<div class="form-group">

<label>Descricao</label>
<textarea name="descricao" class="form-control"></textarea>
</div>

<button class="btn btn-success" type="submit">Adicionar</button>

</form>
</div>

@stop"

codigo controller:

"<?php namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Request;

class ProdutoController extends Controller {

    public function lista(){
        $produtos = DB::select('select * from produtos');

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

    public function mostra(){
        $id = Request::route('id'); //o 1 ai esta setado como o padrao, caso nao passe parametro
        $produto = DB::select('select * from produtos where id = ?', [$id]);
        return view('detalhes')->with('p', $produto[0]);

    }

    public function novo(){
        return view('formulario');
    }


    public function adiciona(){
        $nome = Request::input('nome');
        $valor = Request::input('valor');
        $quantidade = Request::input('quantidade');
        $descricao = Request::input('descricao');


        DB::insert('insert into produtos (nome, quantidade, valor, descricao) values (?,?,?,?)', array($nome, $quantidade, $valor, $descricao));
        return view('adicionado')->with('nome', $nome);
    }
}

?>"

Oi Fabio

deve ser por causa do erro de syntax no HTML:

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

está com inpu, sem o t do final (;

olá , para evitar erros de escrita sempre recomendo usar dessa forma

{{ csrf_field() }}

erro persiste "TokenMismatchException in VerifyCsrfToken.php line 67:"

coloca sua view aqui novamente e verifique se dentro do seu arquivo .env tem o app_key

fora isso, clica com o botão direito na janela do seu navegador e depois em "view page source".

Confere como está o input do _token na sua view, se ele está aparecendo, se está dentro do form, se não tem nada fora do normal.

@extends('layout.principal')

@section('conteudo')

Nome

Valor

Quantidade

Descricao

@stop

No meu .env tem sim a app_key

Reparei que ao atualizar a pagina o token nao muda.

@extends('layout.principal')

@section('conteudo')

<div class="container">
<form action="/produtos/adiciona" method="post">

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

<div class="form-group">

<label>Nome</label>
<input name="nome" class="form-control">
</div>

<div class="form-group">

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

<div class="form-group">

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

<div class="form-group">

<label>Descricao</label>
<textarea name="descricao" class="form-control"></textarea>
</div>

<button class="btn btn-success" type="submit">Adicionar</button>

</form>
</div>

@stop
solução!

Oi Fábio

Repara que você está colocando um espaço em branco dentro do campo valuedo input:

value=" {{ csrf_token() }} "

Não pode ter esse espaço, se não o token fica com espaço ni inicio e final também. Experimenta assim:

value="{{csrf_token()}}"

Dessa forma funcionou. Obrigado Rodrigo :)