Zend Framework - переписать маршрутизатор с помощью Regex - PullRequest
0 голосов
/ 05 августа 2010

Я пытался сократить этот маршрут:
http://abc.localhost/user/view/index/id/1

к этому:
http://abc.localhost/user/1

со следующей частью кода в моем загрузчике, но я получаю сообщение об ошибке, указывающее, что «Обратный маршрут не указан», есть идеи, почему?

$route = new Zend_Controller_Router_Route_Regex(
    'user/(\d+)',
    array(
        'module'        => 'user',
        'controller'    => 'view',
        'action'        => 'index'
    ),
    array(
        1 => 'id'
    )
);
$router->addRoute('user', $route);

Спасибо
Martin

1 Ответ

4 голосов
/ 05 августа 2010

Если вы хотите использовать помощника URL с маршрутами Regex, вам нужно передать 4-й параметр в Zend_Controller_Router_Route_Regex, который он может использовать для перестроения маршрута.Этот 4-й параметр должен быть строкой в ​​формате sprintf, в который он может вставлять параметры.

В вашем случае это будет что-то вроде:

$route = new Zend_Controller_Router_Route_Regex(
    'user/(\d+)',
    array(
        'module'        => 'user',
        'controller'    => 'view',
        'action'        => 'index'
    ),
    array(
        1 => 'id'
    ),
    'user/%d'
);
$router->addRoute('user', $route);

Есть некоторая информация по этомупрямо в конце раздела руководства по маршрутам Regex: http://framework.zend.com/manual/en/zend.controller.router.html#zend.controller.router.routes.regex - но его легко пропустить.

...