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.
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.
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
Oi Fábio
Repara que você está colocando um espaço em branco dentro do campo value
do 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 :)