Bom dia senhores,
Estou tendo um problema para retornar item selecionado na listagem de produtos. O item passa o id por parâmetro mas quando selecionado aparece uma página informando uma mensagem no assunto : 'Trying to get property of non-object'.
Dentro do método mostrar eu estou usando print_r($produtos).die(); e ele me retornr um array abaixo:
Array ( [0] => stdClass Object ( [id] => 1 [nome] => Geladeira [valor] => 5900.00 [descricao] => Side by Side com gelo na porta [quantidade] => 2 ) )
e quando eu chego na página detalhes eu utilizo o script:
<?php
print_r($produto);die();
?>
é exibido também um array.
Segue o código dos métodos do controle e do arquivo PHP;
ProdutoController
<?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 = 1; // no exercício já fica setado só para fins de explicação.
$produto = DB::select('select * from produtos where id = ?', [$id]);
//print_r($produto);die();
return view('detalhes')->with('produto', $produto);
}
}
detalhes.php
<!DOCTYPE html>
<html>
<head>
<title>Listagem de Estoques</title>
<link rel="stylesheet" type="text/css" href="/css/app.css">
</head>
<body>
<div class="container">
<h1>Detalhes do produto: <?= $produto->nome ?> </h1>
<ul>
<li>
<b>Valor:</b> R$ <?= $produto->valor ?>
</li>
<li>
<b>Descrição:</b> <?= $produto->descricao ?>
</li>
<li>
<b>Quantidade em estoque:</b> <?= $produto->quantidade ?>
</li>
</ul>
</div>
</body>
</html>
segue o arquivo de rotas: Route.php
<?php
Route::get('/', function(){
return '<h1>Segunda lógica com Laravel</h1>';
});
Route::get('/produtos','ProdutoController@lista');
Route::get('/produtos/mostra','ProdutoController@mostra');
Gostaria que alguém me desse uma explicação e o que fazer a respeito. Cordialmente, Rafael