Конфигурация маршрутизации в cakephp

Я пытаюсь реализовать маршрутизацию в cakephp. Я хочу, чтобы URL-адреса отображались так...

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

Поэтому для этого я написал в своем файле config/routes.php..

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

Теперь у меня все получилось, но когда я нажимаю на ссылки, URL-адрес в браузере выглядит как www.example.com/nodes/main www.example.com/nodes/about

Есть ли способ заставить URL-адреса отображаться так, как они маршрутизируются? Настройка в .htaccess или httpd.conf была бы простой, но у меня нет к этому доступа.

С уважением Викрам


person vikmalhotra    schedule 13.06.2010    source источник


Ответы (2)


Это должно работать:

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

Вы также можете сделать что-то более мощное, например:

$actions = array('main','about');
foreach ($actions as $action){
   Router::connect('/$action', array('controller' => 'nodes', 'action' => '$action'));
}
person santiagobasulto    schedule 13.06.2010
comment
Привет. Это уже работает для меня, используя код, который я написал. Это просто проблема с URL-адресом, появляющимся в адресной строке, которую я ищу. - person vikmalhotra; 14.06.2010
comment
хм, я видел это счастье. Не помню почему, сейчас посмотрю. Вы пробовали писать контроллеры? Поскольку в вашем коде они отсутствуют, они интерпретируются как фактически работающий контроллер. - person santiagobasulto; 14.06.2010
comment
Хорошо! В этом была проблема. Я не писал контроллер при использовании помощника по ссылке, и, поскольку у меня были узлы набора контроллеров по умолчанию, поэтому он отображал контроллер, а также действие в адресной строке. Спасибо чувак. - person vikmalhotra; 14.06.2010

В основном, если ваши ссылки создаются с помощью помощника Html, в следующем формате:

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

Тогда Cake правильно преобразует ссылки в www.example.com/main.

Но если ваши ссылки

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

они будут указывать на www.example.com/nodes/main

person Nik Chankov    schedule 13.06.2010