CakePHP 1.3.7 обратная маршрутизация, возвращающая URL-адрес по умолчанию вместо настроенного - PullRequest
1 голос
/ 20 января 2011

Я разрабатываю простое приложение со стабильным CakePHP v1.3.7.Я хочу создать простую страницу профиля пользователя, доступную по URL: my.domain / u / id , где id - это идентификатор пользователя в базе данных.

Итак, я написал это (и только это) в app / config / rout.php:

Router::connect('/u/:id',
    array('controller' => 'Users', 'action' => 'profile') 
        ,array('pass'=>array('id'),'id'=>'[0-9]+')
);

Приведенный выше код работает нормально, когда я помещаю my.domain / u / 120 в браузере, он показывает профиль пользователя 120.

Но, когда я пытаюсь создать ссылку на эту страницу, используя помощник HTML:

// some code in a view
$this->html->link('Test', array('controller'=>'Users', 'action'=>'profile', 120))

Помощник HTML (делаетобратная маршрутизация, я думаю) генерирует URL в форме defaut cakephp: <a href="/users/profile/120">Test</a>

В зависимости от конфигурации в rout.php, это должно быть: <a href="/u/120">Test</a>, верно?

Я что-то упустил?

Спасибо.

Ответы [ 2 ]

1 голос
/ 20 января 2011

Попробуйте с этим:

$this->html->link('Test', array('controller'=>'Users', 'action'=>'profile', 'id'=>120))

Я надеюсь, что пропущенный 'ID' это исправит.

0 голосов
/ 20 января 2011

Наконец, благодаря dogmatic69, я удалил связанный с id код маршрута.

Я заканчиваю этим в rout.php:

Router::connect('/u/*',
    array('controller' => 'users', 'action' => 'profile')
);

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

echo $this->html->link('Test',array(
    'controller'=>'users',
    'action'=>'profile', 
    100
))

// renders: <a href="/u/100">Test</a>

Недостатком является то, что я не могу воспользоваться фильтром регулярных выражений маршрутизатора, как в исходном коде маршрута.

...