CakePHP 2.0 Router :: connect, как передать именованные параметры - PullRequest
0 голосов
/ 11 февраля 2012

Я перестраиваю сайт в CakePHP 2.0 и мне нужно перенаправить некоторые старые URL-адреса на новые.Например, это:

http://www.example.com/widget/helpbox/location/mackay-qld

Направлю на это:

http://www.example.com/widgets/answer/location_id:10542

Для этого у меня есть следующееroute:

Router::connect(
    '/widget/helpbox/location/mackay-qld',
    array(
        'controller' => 'widgets',
        'action' => 'answer',
        'location_id' => 10542
    )
);

Когда я отлаживаю $ this-> request-> params, я получаю это:

Array
(
    [plugin] => 
    [controller] => widgets
    [action] => answer
    [named] => Array
        (
        )

    [pass] => Array
        (
        )

    [location_id] => 10542
    [isAjax] => 
)

Но я ожидаю этого:

Array
(
    [plugin] => 
    [controller] => widgets
    [action] => answer
    [named] => Array
        (
            [location_id] => 10542
        )

    [pass] => Array
        (
        )

    [isAjax] => 
)

Я также пытался позвонить

Router::connectNamed(array('location_id'));

... но безрезультатно.location_id все еще передается таким же образом - не как именованный параметр.

Кто-нибудь знает правильный синтаксис?

1 Ответ

1 голос
/ 12 февраля 2012

После подачи заявки и получения ответа о том, что билет недействителен, это заставило меня покопаться немного глубже. Я наконец понимаю, что нужно сделать. Поскольку входящий URL-адрес не содержит именованный параметр, соединение с маршрутом не может быть выполнено так, как вы пытаетесь это сделать. Маршрутное соединение используется в качестве шаблона для маршрутизации определенных местоположений в новое местоположение. Однако вы хотите перенаправить определенный URL-адрес на новый. То, что вы ищете, это перенаправление.

Router::redirect(
    '/widget/helpbox/location/mackay-qld',
    array(
        'controller' => 'widgets',
        'action' => 'answer',
        'location_id' => 10542,
    ),
);

Это должно вернуть результаты, которые вы ищете.

...