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

Erro ao adicionar formulário (TokenMismatchException in VerifyCsrfToken.php line 46)

Estou com problemas para fazer o submit do formulário funcionar, sendo que esta tudo configurado corretamente conforme as video-aulas:

OBS: criei o projeto dentro da pasta xampp\htdocs\estoque

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

Controller: public function adiciona(){

$nome = Request::input('nome'); $valor = Request::input('valor'); $descricao = Request::input('descricao'); $quantidade = Request::input('quantidade');

DB::insert('insert into produtos (nome, valor, descricao, quantidade) values (?, ?, ?, ?)', array($nome, $valor, $descricao, $quantidade));

return view('produto.adicionado')->with('nome', $nome); }

View: @extends('layout.principal')

@section('conteudo')

<h1>Novo produto</h1>

<form action="/produtos/adiciona" method="post"> <input type="hidden" name="_token" value="{{{ csrf_token() }}}" /> <div class="form-group"> <label>Nome</label> <input class="form-control" name="nome"/> </div> <div class="form-group"> <label>Descricao</label> <input class="form-control" name="descricao"/> </div> <div class="form-group"> <label>Valor</label> <input class="form-control" name="valor"/> </div> <div class="form-group"> <label>Quantidade</label> <input type="number" class="form-control" name="quantidade"/> </div>

<button type="submit" class="btn btn-primary btn-block">Salvar</button> </form>

@stop

6 respostas

Acho que tem um jogo de chaves a mais no token

{{{ csrf_token() }}}

Acho que é o problema, retire um jogo de chaves e veja se funciona. Ex:

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

Acredito que o problema seja que você não adicionou o atributo (protected $fillable) na classe model referente a tabela que você está tentando alimentar, Você precisa declarar este atributo e setar quais campos você irá permitir que seja incluso quando é feito requisição de inserção de dados em massa como você está tentando fazer.

A declaração do atributo deve ser feita da seguinte forma protected $fillable = ('campo1', 'campo2', 'campo3'). Obs: substituir esse campos de exemplo pelo campo que deseja permitir.

dessa forma você garante que só serão enviados para o banco de dados estes campos citados na fillable.

Marlon,

O Giovani ainda não está usando uma classe de Model, dele deve estar nas primeiras aulas do curso ainda. Esse protected $fillable é colocado dentro das classes Model e depende muito do jeito que você tá usando. Nesse caso ai, ainda não é necessário, já que ele tá dando insert direto no Controller.

Boa tarde Tarcísio, isso mesmo ainda estou nas primeiras aulas, e mesmo retirando as "{}" a mais conforme você falou, o problema ainda persiste!!

Vai no formulário na tela do sistema...no navegador e pede pra ver o código fonte. Cola aqui o código fonte de dentro do navegador. Assim podemos ver código final

solução!

Tarcísio, eu reinstalei o laravel via composer e rodei a aplicação novamente, e funcionou normalmente!! Deve ter sido alguma sujeira da instalação anterior, vlw pelas dicas!!