Pergunta

Estou tentando implementar o roteamento no CakePHP. Eu quero que os URLs mapearam assim ...

www.example.com/nodes/main -> www.example.com/main www.example.com/nodes/about -> www.example.com/about

Então, para isso, escrevi no meu arquivo de configuração/rotas.php ..

Router::connect('/:action', array('controller' => 'nodes'));

Agora, entendi, mas quando clico nos links, o URL no navegador aparece como www.example.com/nodes/main www.example.com/nodes/about

Existe alguma maneira de eu conseguir que os URLs apareçam da maneira que são roteados? A configuração de .htaccess ou httpd.conf seria fácil - mas não tenho acesso a isso.

Atenciosamente Vikram

Foi útil?

Solução

Isso deve funcionar:

Router::connect('/main', array('controller' => 'nodes', 'action' => 'main'));
Router::connect('/about', array('controller' => 'nodes', 'action' => 'about'));

Você também pode fazer algo mais poderoso, assim:

$actions = array('main','about');
foreach ($actions as $action){
   Router::connect('/$action', array('controller' => 'nodes', 'action' => '$action'));
}

Outras dicas

Basicamente, se seus links forem criados com HTML Helper, com o seguinte formato:

<?php echo $this->Html->link('your link', array('controller'=>'nodes', 'action'=>'main'));?>

Em seguida, o bolo converterá os links corretamente em www.example.com/main

Mas se seus links são

<?php echo $this->Html->link('your link', '/nodes/main/');?>

Eles apontarão para www.example.com/nodes/main

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top