3
respostas

Erro ao submeter o formulário

Fiz o formulário para cadastrar produtos e quando submeto o form como POST aparece o seguinte erro:

FatalErrorException in Handler.php line 25:
Uncaught TypeError: Argument 1 passed to estoque\Exceptions\Handler::report() must be an instance of Exception, instance of Error given, called in /home/andre/Documentos/Alura/laravel1/estoque_laravel/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php on line 73 and defined in /home/andre/Documentos/Alura/laravel1/estoque_laravel/app/Exceptions/Handler.php:25
Stack trace:
#0 /home/andre/Documentos/Alura/laravel1/estoque_laravel/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(73): estoque\Exceptions\Handler->report(Object(Error))
#1 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->handleException(Object(Error))
#2 {main}
thrown

Meu form esta assim:

@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 type="text" name="nome" class="form-control"/>
    </div>
    <div class="form-group">
        <label>Descricao</label>
        <input type="text" name="descricao" class="form-control"/>
    </div>
    <div class="form-group">
        <label>Valor</label>
        <input  type="text" name="valor" class="form-control"/>
    </div>
    <div class="form-group">
        <label>Quantidade</label>
        <input type="number" name="quantidade" class="form-control"/>
    </div>
    <button type="submit" 
    class="btn btn-primary">Salvar</button>
</form>
@stop

Function do 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);    
    }

Routes:

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

Oi André, tudo bom?

Qual versão do php e do laravel você está utilizando? Isso costuma acontecer por conflito de versão entre o php e o laravel =)

Algumas versões do laravel ainda não são muito compativeis com o php 7, infelizmente.

Abraço!

Estou usar o php 7.0 e Laravel 5.0. Tinha lido em algum lugar, acho que no forum mesmo, que da pra desabilitar os erros do php relacionados a comandos depreciados via código, porem, não encontrei mais o post. Tem como e sera que isso resolve ?

Acho que a unica forma de resolver isso por linha de comando é atualizando seu laravel. Pelo o que eu dei uma pesquisada aqui, muita gente teve esse mesmo problema de compatibilidade na versão 5.0, rolou algumas discussões no git deles e a partir da versão 5.2 esse bug foi resolvido.

Uma outra possibilidade para fazer funcionar (e não recomendado) é mexer no framework mesmo para contornar esse lançamento de Erro.

Infelizmente pelo erro a gente não consegue encontrar qual ponto do código está gerando esse Erro, se não a gente podia encontrar o problema resolver =/

No pior dos casos você também pode voltar sua versão do php para 5.6 também, que o framework é compativel.