Routing
O roteador da aplicação Hello permite o cadastro de rotas que respondem a qualquer verbo HTTP.
Hello disponibiliza 5 verbos de rotas para a sua aplicação: GET, POST, PUT, DELETE e PATCH.
Por padrão, o Hello contém um "ServiceProvider" chamado "CSRF" registrado, que permite a execução apenas de rotas com verbos diferentes de "GET" caso exista um token CSRF válido. As rotas com prefixo "api" serão executadas sem avaliação do token CSRF. Para fornecer o token em um formulário, utilize o helper "csrf_token" para retornar o valor do token válido. Esse token deve ser informado em um campo oculto do formulário (hidden) com o nome "_token". Se você não estiver utilizando um formulário, é possível realizar a requisição da rota protegida por CSRF através de um header com o nome "X-CSRF-TOKEN", usando a mesma lógica do campo oculto.
Lembre-se de que você também pode desativar o "ServiceProvider CSRF", mas isso não é recomendado para uma aplicação em produção. Para rotas de API, recomendamos o uso de JWT por meio de middlewares ou Service Providers.
Rotas básicas
<?php
use Kernel\Router\Route;
//Cria uma rota "hello" com o verbo GET
Route::get('hello',function(){ return 'GET - Hello World!'; });
//Cria uma rota "hello" com o verbo POST
Route::post('hello',function(){ return 'POST'; });
//Cria uma rota "hello" com o verbo PUT
Route::put('hello',function(){ return 'PUT'; });
//Cria uma rota "hello" com o verbo DELETE
Route::delete('hello',function(){ return 'DELETE'; });
//Cria uma rota "hello" com o verbo PATCH
Route::patch('hello',function(){ return 'PATCH'; });Às vezes, pode ser necessário registrar uma rota que responda a vários verbos HTTP. Você pode fazer isso usando o métodomatch.Ou ainda, você pode registrar uma rota que responda a todos os verbos HTTP usando o métodoany:
Às vezes, pode ser necessário personalizar a resposta de "página não encontrada" nos erros 404 para rotas que não foram definidas. Para isso, basta usar o asterisco(*) na declaração do seu roteamento:
E para a página inicial, ou seja, a index do seu aplicativo, basta usar a barra (/) na declaração do seu roteamento:
Rotas com parâmetros
Você pode utilizar a seguinte sintaxe para capturar os parâmetros de rotas "products/{id}". Use o helper "path" para retornar o valor do parâmetro de rota.
Além do helper "path", é possível recuperar o valor de um parâmetro de rota diretamente utilizando a seguinte sintaxe:
Também é possível injetar dependências na sua rota. É possível injetar quantas dependências forem necessários, para isso basta informar na frente da variável o namespace ou o nome da classe, conforme o exemplo abaixo:
Rotas com filtros nos parâmetros
Se você desejar que o parâmetro "id" do exemplo anterior seja sempre um valor contendo um número inteiro, você poderá usar o método encadeado "where" que recebe um array associativo onde as chaves são os nomes dos parâmetros da rota e os valores são as expressões regulares.
Rotas com middlewares
É possível definir um filtro para uma rota utilizando um middleware. Os middlewares são responsáveis por executar determinadas ações antes ou depois da execução da rota.
Rotas nomeadas
Também é possível definir um nome ou apelido/alias para a sua rota e acessar a sua rota pelo apelido ou nome fornecido por meio do helper "route". Também é possível passar um segundo parâmetro opcional no helper "route" contendo um array associativo com os valores do parâmetro de rota.
O helper "route" serve apenas para rotas nomeadas com apelidos/alias, enquanto o helper "url" trará o caminho completo da rota que foi definido no arquivo de roteamento "web.php" ou outro arquivo.
Grupo de rotas
É possível definir um grupo de rotas com middleware e prefixo que serão compartilhados no grupo ao invés de definir rota por rota.
Métodos controladores
É possível chamar um método controlador de uma classe controladora usando a seguinte sintaxe de rota. É obrigatoriamente importante que os métodos chamados estejam com o encapsulamento publico.
Você pode usar uma sintaxe alternativa para o código acima:
Também é possível usar o operador “@” seguido do nome da pasta do módulo de onde você deseja chamar o método da classe controladora.
Sintaxe alternativa para chamar um método controlador de uma classe controladora de um módulo.
Controlador de recursos
Você pode usar o método “resources” de rota única para cria várias rotas para lidar com uma variedade de ações no recurso. O controlador gerado já terá métodos para cada uma dessas ações.
Sintaxe alternativa:
Ações tratadas e criadas pelo controlador de recursos
GET
/products
index
products.index
GET
/products/create
create
products.create
POST
/products
store
products.store
GET
/products/{id}
show
products.show
GET
/products/{id}/edit
edit
products.edit
PUT
/products/{id}
update
products.update
DELETE
/products/{id}
destroy
products.destroy
Dica: você pode listar todas as suas rotas definidas na sua aplicação usando o comando de CLI: php hello route:list
Recursos únicos(singleton)
Você pode usar o recurso singleton para registrará as seguintes rotas. Como você pode ver, as rotas de "criação" não são registradas para recursos singleton e as rotas registradas não aceitam um identificador, pois pode existir apenas uma instância do recurso:
Ações tratadas e criadas pelo controlador de recursos únicos(singleton)
GET
/products
show
products.show
GET
/products/edit
edit
products.edit
PUT
/products
update
products.update
Controles de recursos diversos(controllers)
É possível definir de uma só vez uma lista de rotas e métodos fornecendo apenas uma classe controladora. A definição é feita por meio de um array associativo, onde as chaves do array são as rotas e os valores do array são os nomes dos métodos controladores. Por padrão ao definir uma rota, ela será criada com o verbo “GET”. Para criar com outro verbo, basta escrever no início do nome o verbo separado por “:”. Por exemplo: “post:teste”.
Atenção: Esse recurso não aceita a sintaxe alternativa.
Last updated