помощь в маршрутизации cakePHP - PullRequest
0 голосов
/ 17 июля 2010

Здесь я пытаюсь перенаправить страницу, не показывая ее действие в URL,

Например: URL-адрес http://localhost/brands/1/xyz

Router::connect(
    '/brands/:id/:name',
    array(
        'controller' => 'brands',
        'action' => 'index',
        'id' => '[0-9]{1,}',
        'name' => '[a-z]{1,}'
    )
);

отлично работает ....

Но мне нужно сделать id и name необязательными и попробовать это:

Router::connect(
    '/brands/:id/:name',
    array(
        'controller' => 'brands',
        'action' => 'index',
        'id' => '[0-9]{1,}',
        'name' => '[a-z]{1,}'
    )
);

в соответствии с http://book.cakephp.org/view/542/Defining-Routes

Но когда я пытаюсь этот URL http://localhost/brands/1, он ищет действие 1, но http://localhost/brands/1/xyz работает нормально.

Есть ли ошибка в моей конфигурации маршрутизации ????

Ответы [ 2 ]

2 голосов
/ 17 июля 2010

Если вы просто хотите получить доступ к http://localhost/brands/1,, вам нужно добавить этот маршрут:

Router::connect('/brands/:id',
   array('controller' => 'brands','action' => 'index','id' => '[0-9]{1,}')
);

(а также сохранить исходный маршрут)

Router::connect('/brands/:id/:name',
    array('controller' => 'brands','action' => 'index','id' => '[0-9]{1,}','name' => '[a-z]{1,}')
);

(и, наконец, маршрут для / брендов)

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

Затем проверьте в контроллере $ this-> params ['id'] и $ this-> params ['name'].При необходимости перенаправьте на правильный URL-адрес (если страница одна и та же, и вы всегда хотите иметь имя в URL-адресе, что хорошо для SEO).

1 голос
/ 17 июля 2010

Укажите второй маршрут, опуская необязательные параметры.

...