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

ErrorException in ProdutoController.php line 13:

Olá, estou recebendo mensagem de erro quando acesso a pagina de detalhes,

ErrorException in ProdutoController.php line 13:
Missing argument 1 for estoque\Http\Controllers\ProdutoController::mostra()
in ProdutoController.php line 13
at HandleExceptions->handleError('2', 'Missing argument 1 for estoque\Http\Controllers\ProdutoController::mostra()', '/home/roberto/Área de Trabalho/estoque/app/Http/Controllers/ProdutoController.php', '13', array()) in ProdutoController.php line 13
at ProdutoController->mostra()
at call_user_func_array(array(object(ProdutoController), 'mostra'), array()) in Controller.php line 246
at Controller->callAction('mostra', array()) in ControllerDispatcher.php line 162
at ControllerDispatcher->call(object(ProdutoController), object(Route), 'mostra') in ControllerDispatcher.php line 107
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 141
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 108
at ControllerDispatcher->callWithinStack(object(ProdutoController), object(Route), object(Request), 'mostra') in ControllerDispatcher.php line 67
at ControllerDispatcher->dispatch(object(Route), object(Request), 'estoque\Http\Controllers\ProdutoController', 'mostra') in Route.php line 204
at Route->runWithCustomDispatcher(object(Request)) in Route.php line 134
at Route->run(object(Request)) in Router.php line 701
at Router->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 141
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101
at Pipeline->then(object(Closure)) in Router.php line 703
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 670
at Router->dispatchToRoute(object(Request)) in Router.php line 628
at Router->dispatch(object(Request)) in Kernel.php line 214
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 141
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in VerifyCsrfToken.php line 43
at VerifyCsrfToken->handle(object(Request), object(Closure)) in VerifyCsrfToken.php line 17
at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 55
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 61
at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 36
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 40
at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101
at Pipeline->then(object(Closure)) in Kernel.php line 115
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 84
at Kernel->handle(object(Request)) in index.php line 53
at require_once('/home/roberto/Área de Trabalho/estoque/public/index.php') in server.php line 21
<?php namespace estoque\Http\Controllers;

use Illuminate\Support\Facades\DB;
use Request;

class ProdutoController extends Controller {

    public function lista() {
        $produtos = DB::select('select * from produtos');
        return view('listagem')->with('produtos', $produtos);        
    }

linha 13->:    public function mostra($id) {

        $resposta = DB::select('select * from produtos where id = ?', [$id]);

        if(empty($resposta)) {
            return "Este produto não existe";
        }

        return view('detalhes')->with('p', $resposta[0]);
    }
}
4 respostas

Roberto, parece que a view não está enviando o id do produto para o controller, poderia postar a view de listagem aqui pra gente ver?

<?php namespace estoque\Http\Controllers;

use Illuminate\Support\Facades\DB;
use Request;

class ProdutoController extends Controller {

    public function lista() {
        $produtos = DB::select('select * from produtos');
        return view('listagem')->with('produtos', $produtos);        
    }

    public function mostra($id) {

        $resposta = DB::select('select * from produtos where id = ?',[$id]);

        if(empty($resposta)) {
            return "Este produto não existe";
        }

        return view('detalhes')->with('p', $resposta[0]);
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="/css/app.css">
    <link rel="stylesheet" type="text/css" href="/css/index.css">

    <title>Controle de estoque</title>
</head>
<body>
    <h1>Listagem produtos</h1>

    <table class="table">
        <?php foreach ($produtos as $p) : ?>
            <tr>
                <td><?= $p->nome?></td>
                <td><?= $p->valor?></td>
                <td><?= $p->descricao?></td>
                <td><?= $p->quantidade?></td>
                <td><a href="produtos/mostra?id=<?=$p->id?>"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></a></td>
            </tr>
    <?php endforeach ?>
    </table>
</body>
</html>

Roberto, desculpa, mas ainda não identifico o problema. Por algum motivo o id do produto não está chegando no controller, assim, na hora que fazer a consulta no banco de dados, ele não consegue encontrar nada, por que o id não está chegando lá. Faz um teste pra mim?

Troca o parametro id por um objeto Request e usa dentro deste método mostra a função dd() neste objeto e cola aqui a saida?

Assim...

 public function mostra(Request $request){
    dd($request);
    // restante do codigo
}

Me informa também, que versão do laravel você está usando?

solução!

Wanderson acabei encontrando o erro na pagina de listagem. onde era:

<td><a href="produtos/mostra?id=<?=$p->id?>"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></a></td>
<td><a href="produtos/mostra/<?=$p->id?>"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></a></td>

Obrigado.