Você está aqui: Laravel ::: Artigos e Tutorias ::: CRUD - CREATE, READ, UPDATE, DELETE |
Como criar um CRUD completo em Laravel 8 - CRUD em Laravel usando PHP e MySQL (MariaDB) - Parte 3Quantidade de visualizações: 2891 vezes |
Na parte 2 deste tutorial sobre CRUD em Laravel usando PHP e MySQL (MariaDB) nós criamos uma rota de direcionamento do tipo recursos, ou seja, para um controlador LivroController que contém todos os métodos necessários para manipular o modelo (model) Livro. Fizemos também toda a parte do CREATE do nosso CRUD. Dessa forma, a gravação do livro no banco de dados MySQL já está completo. Nessa terceira parte do tutorial nós vamos listar os livros já cadastrados e oferecer as opções para exibir os detalhes de um livro, editá-lo ou excluí-lo. Vamos começar com a listagem. Como listar os livros já cadastrados O primeiro passo para listar os livros cadastrados na tabela do banco de dados MySQL é acrescentar um método index() no controle LivroController. Abra o arquivo LivroController.php e modifique-o para a versão abaixo: <?php namespace App\Http\Controllers; use App\Models\Livro; use Illuminate\Http\Request; class LivroController extends Controller{ // mostra a view listando os livros cadastrados public function index(){ // obtém todos os livros cadastrados $livros = Livro::all(); // direciona para a view e fornece um vetor // contendo os livros return view('livros.index', compact('livros')); } // mostra a view para cadastrar um novo livro public function create(){ return view('livros.create'); } // recebe as informações do formulário e as grava // no banco de dados public function store(Request $request){ // valida o formulário $request->validate([ 'titulo' => 'required', Veja que no método index() nós fazemos uma chamada ao método all() do Eloquent para obter todos os registros da tabela livros. Em seguida nós fornecemos o vetor retornado para a view index. Vamos agora criar a view e aprender como obter a lista de livros enviada pelo controller e exibí-la. Como listar na view os dados recebidos do controller LivroController Vá até o diretório C:\xampp\htdocs\biblioteca\resources\views\livros e crie um arquivo chamado index.blade.php. Modifique o seu código para a listagem abaixo: <html> <head> <meta charset="utf-8"> <title>Biblioteca</title> </head> <body> <h1>Livros Cadastrados</h1> @if($status = Session::get('mensagem')) <h2>{{ $status }}</h2> @endif <h4><a href="{{ route('livros.create') }}">Cadastrar Novo Livro</a></h4> <table width="709" border="1" cellspacing="0" cellpadding="3"> <tr> <td width="85" align="center"><strong>Id</strong></td> <td width="161" align="center"><strong>Título</strong></td> <td width="156" align="center"><strong>Autor</strong></td> <td width="98" align="center"><strong>Páginas</strong></td> <td width="167" align="center"><strong>Opções</strong></td> </tr> @foreach($livros as $livro) <tr> <td align="center">{{ $livro->id }}</td> <td>{{ $livro->titulo }}</td> <td>{{ $livro->autor }}</td> <td align="center">{{ $livro->paginas }}</td> Novamente eu mantive a formatação mínima para facilitar o entendimento do código. Já no topo da página nós temos um link que leva para a rota route('livros.create'). Isso permite cadastrar um novo livro. Em seguida temos um laço @foreach($livros as $livro) que percorre o vetor recebido a partir do controller LivroController. Para cada item desse vetor nós criamos uma nova linha na tabela HTML. Note que já forneci as opções para manipular os livros individuais, a saber, Detalhes, Editar e Excluir. Já temos tudo pronto! Direcione o seu navegador para a URL http://localhost/biblioteca/public/livros e teremos o seguinte resultado: ![]() É claro que se você clicar em uma das opções exibidas para cada registro, um erro ocorrerá. Experimente, por exemplo, clicar no botão Excluir de algum dos livros listados. De imediato teremos a seguinte mensagem de erro: BadMethodCallException Method App\Http\Controllers\LivroController::destroy does not exist. http://localhost/biblioteca/public/livros/5 Bad Method Call Did you mean App\Http\Controllers\LivroController::store() ? Isso aconteceu porque o nosso controller LivroController ainda não possui o método que permite excluir o livro. Vamos finalizar esta parte adicionando mais este método ao controller? Como excluir um livro usando o método destroy() do LivroController Abra novamente o arquivo LivroController.php e modifique-o para o código abaixo (note que vamos somente incluir o método destroy(): <?php namespace App\Http\Controllers; use App\Models\Livro; use Illuminate\Http\Request; class LivroController extends Controller{ // mostra a view listando os livros cadastrados public function index(){ // obtém todos os livros cadastrados $livros = Livro::all(); // direciona para a view e fornece um vetor // contendo os livros return view('livros.index', compact('livros')); } // mostra a view para cadastrar um novo livro public function create(){ return view('livros.create'); } // recebe as informações do formulário e as grava // no banco de dados public function store(Request $request){ // valida o formulário $request->validate([ 'titulo' => 'required', 'autor' => 'required', 'paginas' => 'required']); // obtém os valores do form Livro::create($request->all()); // direciona para página cadastro novamente, // com uma mensagem de sucesso Veja que, no método destroy(), nós fazemos uma chamada ao método delete() do Eloquent e redirecionamos o usuário para a view index, juntamente com uma mensagem indicando que o livro foi excluído com sucesso. Vamos lá. Sua vez. Clique no botão Excluir de um dos livros e veja o resultado. Na parte 4 do tutorial nós vamos concluir as opções de mostrar os detalhes do livro e permitir alterá-lo. Até lá! Leia a parte 4 aqui: Como criar um CRUD completo em Laravel 8 - CRUD em Laravel usando PHP e MySQL (MariaDB) - Parte 4 |
![]() |
Veja mais Dicas e truques de Laravel |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |