Trocar id pelo nome na listagem Abrir uma outra view com todas as informações do banco de cada id
Trocar id pelo nome na listagem Abrir uma outra view com todas as informações do banco de cada id
Oi Rixard,
Trocar o Id pelo nome seria em qual página especificamente? acredito que você possa fazer isso só trocando o método chamado nos dados de uma View, se você estiver chamando o método ->id
, pode chamar ->nome
.
Para você abrir uma outra view, você vai precisar seguir os seguintes passos:
1 - Criar uma rota para essa página, como vamos pegar dados, devemos utilizar o método GET
2 - Criar uma classe controller com um método que vai ser responsável por obter os dados do banco.
3 - Na rota que criamos, referenciar o nome do controller e o método separados pelo arroba @
4 - Neste método dentro do controller que criamos, chamamos o Model que contém os dados que você quer, por ex o model Banco.php que tem dentro do app.
5 - Verificar o método do componente do Laravel que fala com o banco de dados (Eloquent) que deve ser chamado, para exibir todas as informações, é comumente utilizado o método all $dados = Banco::all()
6 - Colocar estes dados recebidos pelo método Banco::all()
em uma variável e incluir ela como segundo argumento do método view('minhapagina', $dados)
7 - Exibir os dados dentro da View, chamando os métodos correspondentes às colunas da tabela, ex:
foreach ($dados as $dado) {
echo $dado->nome;
echo $dado->agencia;
echo $dado->conta;
}
Espero ter ajudado, se precisar de algo mais específico pode perguntar
@extends('layout')
@section('cabecalho') Produtos @endsection
@section('conteudo') @if(!empty($mensagem))
<ul class="list-group" style="margin-top: -25px">
<table class="table table-hover">
<thead style="background-color: #9d9d9d; color: white;">
<tr>
<td>ID</td>
<td style="width: 40%">Nome</td>
<td>Unidade</td>
<td>Descrição</td>
<td>Tipo</td>
<td></td>
<td></td>
</tr>
</thead>
<tbody>
<?php foreach ($produtos as $produto):?>
<tr>
<td><?= $produto->id ?></td>
<td style="width: 40%"><?= $produto->nome ?></td>
<td><?= $produto->unidade_de_venda ?></td>
<td><?= $produto->descricao ?></td>
<td><?= $produto->classe_id ?></td>
<td><a href="/produtos/{{$produto->id}}" class="btn btn-info btn-sm"><i class="fas fa-edit"></i></a></td>
<td>
<form method="post" action="/produtos/remover/{{ $produto->id}}"
onsubmit="return confirm('Tem certeza que deseja remover {{ addslashes( $produto->nome )}}?')">
@csrf
@method('DELETE')
<button class="btn btn-danger btn-sm"><i class="far fa-trash-alt"></i></button>
</form>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<div style="position: absolute; top: 115%; left: 70%; ">{{ $produtos->links() }}</div>
</ul>
@endsection
<?php
namespace App\Http\Controllers;
use App\Classe; use App\Produto; use Illuminate\Support\Facades\DB; use Illuminate\Http\Request;
class ProdutosController extends Controller { public function index(Request $request) { $produtos = Produto::paginate(10); $mensagem = $request->session()->get('mensagem');
return view('produtos.index', compact('produtos', 'mensagem'));
}
private function getClasses()
{
$classesList = Classe::all();
return $classesList;
}
public function create()
{
$classes = $this->getClasses();
return view('produtos.create', compact('classes'));
}
public function store(Request $request)
{
$nome = $request->nome;
$preco = $request->preco;
$quantidade = $request->quantidade;
$unidade_de_venda = $request->unidade_de_venda;
$ean = $request->ean;
$descricao = $request->descricao;
$classe = $request->classe_id;
$produto = new Produto();
$produto->nome = $nome;
$produto->preco = $preco;
$produto->quantidade = $quantidade;
$produto->unidade_de_venda = $unidade_de_venda;
$produto->ean = $ean;
$produto->descricao = $descricao;
$produto->classe_id = $classe;
$produto->save();
$request->session()
->flash(
'mensagem',
"Produto {$produto->id} criado com Sucesso {$produto->nome}
");
return redirect()->route('listar_produtos');
}
public function destroy (Request $request)
{
Produto::destroy($request->id);
$request->session()
->flash(
'mensagem',
"Produto removido com sucesso"
);
return redirect()->route('listar_produtos');
}
}
Esta ai a view e control, na listagem de produtos aparece digitei classe_id que vem de uma tabela estrangeira, pois quando digito classe_nome da erro esta aparecendo o id da classe. e não consegui que aparecesse o nome da classe
O que eu quero é clicar em um item da lista, ex: produtos, e abrir uma view de informações sobre esse produto