-
Notifications
You must be signed in to change notification settings - Fork 2
Rotas
Carlos Eduardo edited this page Feb 1, 2017
·
3 revisions
Na pasta da aplicação, crie o arquivo routes.php
, você pode setar as rotas que desejar. Outra forma usar por annotation.
use \Core\Routes\Router;
// Registrar Erro 404 - Alias para Router::error(404, [...])
Router::notfound([
'controller' => 'Error',
'action' => 'index'
]);
// Registrar Erro 403
Router::error(403,[
'controller' => 'Error',
'action' => 'denied'
]);
// Registrar rota: padrão: /
Router::main([
'controller' => 'Main',
'action' => 'index'
]);
// Registrar rota: /index, com base na rota padrão
Router::route('/index', Router::main());
// Registrar rota: /entrar
Router::route('/entrar', [
'controller' => 'Login',
'action' => 'index'
]);
// Registrar rota: /post/<Parâmetro Numérico>
Router::route('/post/:id',[
'controller' => 'Main',
'action' => 'teste'
])->params([
'id' => '\d+'
]);
// Registrar rota: /post/<Parâmetro Aplfanumérico>
Router::route('/post/:slug',[
'controller' => 'Main',
'action' => 'action'
])->params([
'slug' => '[a-zA-Z0-9\-_]+'
]);
// Registrar rota: /post/<Data no Formato DD-MM-AAAA>/<Parâmetro Aplfanumérico>
Router::route('/post/:date/:slug', [
'controller' => 'Main',
'action' => 'pdate'
])->params([
'date' => '[0-9]{2}-[0-9]{2}-[0-9]{4}',
'slug' => '[a-zA-Z0-9\-_]+'
]);
Por annotation, é gerado um arquivo routes.cache.php
, sempre que fizer alteração em uma rota por annotation, é necessário apagar este arquivo para que seja gerado um com as alterações.
A sintaxe é bem simples:
@Route("/caminho-da/rota", {"atributos":"fomato-json"})
Os atributos válidos são:
-
name
- Nome da Rota, para identificação e geração de links. -
params
- Parâmetros da URL, Ex:@Route("/post/:slug", {"params":{"slug":"[a-ZA-Z0-9\-_]+"}})
-
allows
- Método ["GET", "POST", "PUT", "DELETE", etc..] Padrão: "GET"
Para aplicar as rotas nas actions faça o seguinte:
<?php
namespace Controller;
use \Core\Controller;
class MainController extends Controller {
/**
* Página Inicial
* @Route("/", {"name":"main.index", "allows":"GET"})
*/
public function index() {
return 'Página Inicial';
}
/**
* Página Contato
* @Route("/contato", {"name":"main.contato", "allows":"GET"})
*/
public function contact() {
return 'Página Contato';
}
/**
* Post Contato
* @Route("/contato", {"name":"main.contato.post", "allows":"POST"})
*/
public function postContact() {
if ($this->request->post)
return 'Hello '.$this->request->post['name'];
else
return $this->contact();
}
}