Welcome to the Cookbook

loading...

3.4.5.5 Roteando prefixos

The original text for this section has changed since it was translated. Please help resolve this difference. You can:

More information about translations

Várias aplicações necessitam de uma seção para usuários administradores com privilégios de alteração de dados. Muitas vezes isso é definido na url, como /admin/users/edit/5. No CakePHP é possível utilizar uma rota para administradores mapeando a nossa seção no arquivo de configuração para Routing.admin.

Configure::write('Routing.admin', 'admin');
  1. Configure::write('Routing.admin', 'admin');

Você pode definir quais métodos do seu controller usarão a rota de administrador bastando iniciar o nome do método com o prefixo admin_. Usando o nosso exemplo para acessar uma url de administração usuários /admin/users/edit/5 deveremos ter o o método admin_edit em nosso UsersController informando que o primeiro parâmetro é o número 5.

Você pode mapear a url /admin para a sua ação inicial admin_index alterando o arquivo de configuração de rotas.

Router::connect('/admin', array('controller' => 'pages', 'action' => 'index', 'admin' => true)); 
  1. Router::connect('/admin', array('controller' => 'pages', 'action' => 'index', 'admin' => true));

Você pode configurar o seu arquivo de configuração para utilizar vários prefixos também:

Router::connect('/profiles/:controller/:action/*', array('prefix' => 'profiles', 'profiles' => true)); 
  1. Router::connect('/profiles/:controller/:action/*', array('prefix' => 'profiles', 'profiles' => true));

As ações(métodos) que pertençam à seção de profiles devem ter seus nomes iniciados com o prefixo profiles_. A estrutura da url do nosso exemplo da seção de profiles de usuários é /profiles/users/edit/5 que fará chamada ao método profiles_edit no nosso UsersController. É importante lembrar que usando o HTML Helper do cakePHP para montar nossos links já estaremos montando o nosso link de forma correta. Abaixo há um exemplo de como construir o nosso link utilizando o HTML helper.

echo $html->link('Edite seu perfil', array('profiles' => true, 'controller' => 'users', 'action' => 'edit', 'id' => 5)); 
  1. echo $html->link('Edite seu perfil', array('profiles' => true, 'controller' => 'users', 'action' => 'edit', 'id' => 5));

Você pode setar vários prefixos no roteador do cakePHP criando uma estrutura flexível de URL's para a sua aplicação.