Introdução aos controladores Laravel

Todo o seu aplicativo pode ser criado usando Closures no arquivo routes.php, ele se tornará confuso, mas será possível. E se você puder organizar todo o seu processo com a ajuda das classes Controller? Vamos ver como. Os controladores são capazes do grupo em uma classe, todas as lógicas associadas ao tratamento de solicitações. O aplicativo de diretório / Http / Controladores é responsável por armazenar os controladores. Na estrutura MVC, 'C' significa Controller, que atua como direcionador de tráfego entre Views e Models. Neste tópico, vamos aprender sobre os controladores Laravel.

Lista de controladores Laravel

Aqui está a lista de controladores Laravel mencionados abaixo

1. Controladores básicos

Abaixo, você pode dar uma olhada em um exemplo básico da classe do controlador. Você pode notar aqui que 'MyController' estende 'Controller'. Aqui 'Controller' é a classe base. A classe base 'Controller' fornece métodos como 'middleware', 'dispatch' e 'validate', o que o torna conveniente. Você pode usar o middleware para atribuí-lo à rota do controlador ou ao construtor do seu controlador.

<_?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\User;
class MyController extends Controller
(
/**
* Show profile
*
*/
public function show($id)
(
return view('user.profile', ('user' => User::foundOrLost($id)));
)
)

A rota para o MyController pode ser definida assim:

Route::get('user/(id)', ' ');

Atribuindo middleware em arquivos de rota:

Route::get('profile', ' ')->middleware('auth');

Quando o URI da rota corresponde a uma solicitação específica, o método 'show' na classe 'MyController' é executado e os parâmetros especificados na rota também são atribuídos ao método.

Algumas cerejas extras para você:

  • Não é necessário mencionar o espaço para nome completo do controlador, pois o 'RouteServiceProvider' é carregado automaticamente no grupo de rotas que possui um espaço para nome, todos os arquivos de rota. Você só precisa especificar a parte do nome que aparecerá após App \ Http \ Controllers.
  • Se você deseja definir o controlador de ação única, poderá fazê-lo colocando um único método '__invoke' no seu controlador.

2. Controladores de Recursos

Ao criar um aplicativo, é necessário executar operações CRUD (Criar, Ler, Atualizar, Excluir). Com os controladores de recursos do Laravel, basta criar o controlador e você pode deixar o resto no Laravel. A rota de recurso do Laravel alocará as rotas de operação CRUD para o controlador que também apenas com uma linha de codificação. Uma única rota pode ser registrada para todos os métodos no arquivo routes.php.

Vamos dar um exemplo, suponha que para sua aplicação, você queira criar um controlador que lide com todas as solicitações HTTP recebidas relativas às 'imagens' armazenadas. Isso será feito rapidamente com a ajuda do comando Artisan. Vejamos o comando Artisan 'make: controller' rapidamente para criar um controlador semelhante da seguinte maneira:

php artisan make:controller ImageController --resource

Um controlador será gerado no app / Http / Controllers / ImageController.php pelo comando acima. Este controlador consistirá em um método dedicado a cada operação de recurso disponível.

Agora, você pode declarar uma rota para lidar com várias ações como esta:

Route::resource('images', 'ImageController');

Esta declaração de rota cria muitas rotas que podem lidar com inúmeras ações. Este controlador terá métodos específicos para cada ação disponível. Também incluirá as notas que o informarão sobre os URIs e verbos HTTP que estão sendo manipulados.

Se você deseja registrar mais de um controlador de recursos de uma só vez, pode fazê-lo com a ajuda de uma matriz, como mostrado abaixo:

Route::resources((
'images' => 'ImageController',
'posts' => 'PostController'
));

Tabela de ações

VerboURI / CaminhoEvento de açãoNome da Rota
POSTAR/ imagenslojaimages.store
OBTER/ imagensíndiceimages.index
OBTER/ images / createcrioimages.create
OBTER/ images / (image)mostrarimages.show
PUT / PATCH/ images / (image)atualizarimages.update
OBTER/ images / (image) / editeditarimages.edit
EXCLUIR/ images / (image)destruirimages.destroy

3. Controladores implícitos

Com a ajuda desses controladores, você pode lidar com todas as ações apenas definindo uma rota. Você precisa definir a rota primeiro usando Route :: controller como este:

Route::controller('users', 'MyController');

Aqui, dois argumentos estão sendo passados ​​para o controlador.

  1. URI base
  2. Nome da classe do controlador

Agora você só precisa adicionar métodos ao 'MyController' com o verbo HTTP prefixado a eles.

class MyController extends Controller (
public function getIndex()
(
//
)
public function anyLogin()
(
//
)
public function postProfile()
(
//
)
)

Os métodos 'index' responderão a 'users', que é o URI raiz / base sendo tratado pelo Controller.

Uma ação com várias palavras pode ser acessada usando 'dash' no URI. Consulte a ação do controlador abaixo como um exemplo:

public function getAdminProfile() ()

Esta ação do controlador no MyController responderá ao URI 'users / admin-profile'.

4. Injeção de Dependência e Controladores

A injeção de dependências torna seus aplicativos da Web mais fáceis de testar e manter.

1. Injeção de Construtor

O Laravel gerencia dependências de classe e resolve todos os controladores. Seu controlador pode precisar de dependências no construtor. Com o Laravel, você pode digitar dicas sobre quase todas essas dependências. O controlador de serviço do Laravel resolverá todas as dependências automaticamente e as injetará na instância do controlador.

<_?php
namespace App\Http\Controllers;
use App\Repositories\UserRepository;
class MyController extends Controller
(
/**
* The user repository instance.
*/
protected $users;
/**
* Create a new controller instance.
*
* @param UserRepository $users
* @return void
*/
public function __construct(UserRepository $users)
(
$this->users = $users;
)
)

2. Método de injeção

Além de injetar dependências no construtor, você também pode digitá-las nos métodos do seu controlador. Por exemplo, a instância Illuminate \ Http \ Request pode ser injetada no método do controlador da seguinte maneira:

<_?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class MyController extends Controller
(
/**
* Store a new user.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
(
$name = $request->name;
//
)
)

Recursos dos controladores Laravel

Abaixo estão alguns recursos do controlador laravel:

  • Suporte MVC: O Laravel é suportado pela MVC Architecture. Isso torna o desenvolvimento rápido, pois um usuário pode trabalhar na lógica enquanto o outro trabalha na exibição. Várias visualizações são suportadas para um modelo sem duplicação, pois a lógica de negócios é separada da lógica de apresentação.
  • Autenticação: O Laravel possui um sistema embutido para autenticação, você só precisa cuidar de outros aspectos, como configurar vistas, modelos e controladores.
  • Segurança: a segurança é o principal fator a ser considerado no desenvolvimento de um aplicativo. O Laravel fornece segurança por sua segurança embutida no aplicativo.
  • Artesão: O artesão ajuda na execução de tarefas repetitivas sem que elas sejam executadas manualmente pelos desenvolvedores. Eles podem ser usados ​​para criar a estrutura do banco de dados, o código e a migração, para torná-lo gerenciável.
  • Modelos: com o inovador e poderoso mecanismo de modelos do Laravel, os desenvolvedores podem criar aplicativos da web dinâmicos.

Artigos recomendados

Este é um guia para os controladores Laravel. Aqui discutimos um número razoável de conceitos de controladores Laravel que permitirão que você crie seu próprio controlador para sua aplicação, que será seguro e poderoso ao mesmo tempo. Você também pode consultar o seguinte artigo para saber mais -

  1. O que é o Laravel Framework?
  2. Comandos do Laravel
  3. O que é o Laravel?
  4. O que é Servlet?