Posted on: April 01, 2023 11:59 AM
Posted by: Renato
Categories: Laravel laravelphp
Views: 295
Diferença entre o Laravel Normal Controller e o Resource Controller
- Difference Between Laravel Normal Controller And Resource Controller
Neste tutorial, aprenderemos a diferença entre controladores normais e de recursos fornecidos pelo framework laravel. Os dois controladores são muito vitais em nossa jornada de desenvolvimento de aplicativos usando o framework laravel. Sem perda de tempo, vamos mergulhar.
1. Recurso Laravel e Controlador Normal
Laravel Controlador Normal
O controlador normal do Laravel é o controlador que dá ao desenvolvedor a oportunidade de usar métodos personalizados que também mapeiam para rotas personalizadas.
Ao contrário do controlador de recursos, ele não possui sinalizador --resource ao criá-lo. Execute o comando craft abaixo para criar o controlador normal:
O controlador será criado na pasta app/Http/Controllers e terá a aparência abaixo.
Lembre-se de que este controlador não possui nenhum método e o desenvolvedor tem a opção de criar seu próprio método que aponte para rotas personalizadas:
app/Http/Controllers/PostController.php
Laravel Resource ControllerName
Laravel resource controller é o controlador que contém todos os métodos, também conhecidos como métodos CRUD (Create, Retrieve, Update e Destroy) que executam todas as funcionalidades do banco de dados. Este controlador é criado exatamente como o controlador normal, mas com o sinalizador --resource .
É um controlador muito útil na criação de aplicações que envolvam funcionalidades de banco de dados.
Também pode ser referido como controlador engenhoso e está listado entre as melhores práticas quando usado de forma eficaz no desenvolvimento de aplicativos laravel. Execute o comando artesão abaixo para criar este controlador:
O controlador será criado na pasta app/Http/Controllers e ficará como abaixo:
app/Http/Controllers/PostController.php
Controlador de recursos com vinculação implícita de modelo
O controlador acima também pode ser criado usando o model binding implícito. Use o comando abaixo para incluir o model binding implícito:
O controlador será criado na pasta app/Http/Controllers/Post e ficará como abaixo:
app/Http/Controllers/Post/PostController.php
...
2. Crie rotas normais do controlador e do controlador de recursos
As rotas do laravel são colocadas no arquivo web.php encontrado na pasta de rotas manualmente.
Rotas CRUD do controlador normal do Laravel
Assumimos que a rota normal é fornecida com todos os métodos personalizados, ou seja, métodos CRUD, que apontam para suas respectivas rotas, então devem se parecer com abaixo:
rotas/web.php
Rotas CRUD do Laravel Resource Controller
Ao contrário das rotas normais do controlador, que têm muitas rotas colocadas manualmente no arquivo routes/web.php, o controlador de recurso é escrito apenas uma vez com o sinalizador de recurso e se parece com o seguinte:
rotas/web.php
A rota única acima cria várias rotas para lidar com funções CRUD que apontam para todos os métodos CRUD do controlador de recursos, conforme mostrado abaixo:
Verbo |
URI |
Ação |
Nome da Rota |
PEGAR |
/Postagens |
índice |
posts.index |
PEGAR |
/postagens/criar |
criar |
postagens.criar |
PUBLICAR |
/Postagens |
loja |
posts.store |
PEGAR |
/postagens/{id} |
mostrar |
posts.mostrar |
PEGAR |
/postagens/{id}/editar |
editar |
posts.editar |
PUT/PATCH |
/postagens/{id} |
atualizar |
posts.update |
EXCLUIR |
/postagens/{id} |
destruir |
posts.destroy |
O controlador de recursos que criamos usando o php craftsman make:controller Post\PostController -- resource -- model=Post terá exatamente a mesma rota de recurso do controlador normal, mas nos bastidores gera as seguintes rotas.
Compare as rotas para o controlador de recurso de ligação de modelo implícito com as rotas do controlador de recurso comum. Espero que você tenha aprendido alguma coisa 🤣🤣.
A rota única acima também criará várias rotas para lidar com as funções CRUD, conforme mostrado abaixo.
Observe a associação de modelo implícito nas rotas em comparação com as rotas de recursos sem associação de modelo implícito. Espero que você esteja aprendendo algo:
Verbo |
URI |
Ação |
Nome da Rota |
PEGAR |
/Postagens |
índice |
posts.index |
PEGAR |
/postagens/criar |
criar |
postagens.criar |
PUBLICAR |
/Postagens |
loja |
posts.store |
PEGAR |
/postagens/{postagem} |
mostrar |
posts.mostrar |
PEGAR |
/posts/{post}/editar |
editar |
posts.editar |
PUT/PATCH |
/postagens/{postagem} |
atualizar |
posts.update |
EXCLUIR |
/postagens/{postagem} |
destruir |
posts.destroy |
Incluindo apenas métodos de recursos específicos
Às vezes, você gostaria de incluir métodos e rotas de recursos específicos do laravel após a geração normal do controlador de recursos.
Isso é feito principalmente quando você gostaria de usar o controlador de recursos que já foi criado na criação de rotas de API sem criar o controlador de recursos de API que envolve o uso de -- sinalizador de API .
Você isentará os métodos create e edit que não são necessários nas rotas da API usando as funções only() ou except() que são fornecidas pelo framework laravel.
Essas funções são usadas nos métodos de construção do controlador de recursos ou na rota do controlador de recursos, conforme mostrado abaixo:
Excluir índice e mostrar rota
ao declarar as rotas de recursos, você pode usar o método except() para excluir o índice e mostrar a rota conforme abaixo:
Use apenas criar, atualizar e mostrar rota
O método laravel only() ajuda você a mostrar apenas os métodos necessários. Você pode usá-lo da mesma forma que o método except():
Uau!! Terminamos de aprender sobre a diferença entre o controlador normal e o recurso usado no framewok laravel.
Esperamos que este artigo tenha ajudado muito você.
Por favor, deixe saber através dos comentários como você se sente sobre nossos tutoriais e qual seção você gostaria de falar.
Fonte:
- https://www.magnificcoding.com/article/difference-between-laravel-normal-controller-and-resource-controller
Donate to Site
Renato
Developer