CakePHP Помощь при маршрутизации - PullRequest
0 голосов
/ 12 октября 2010

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

Я хочу настроить маршрутизацию примерно так

site.com/users/**{userId or Username}**/wall  => *should route to wall() action*

site.com/users/**{userId or Username}**/dishes => *should route to dishes() action*

site.com/users/**{userId or Username}**/restaurants => *should route to restaurants() action*

site.com/users/**{userId or Username}**/photos => *should route to photos() action*

Я не уверен, как сохранить неповрежденным URL-адрес в адресной строке, но загружаю действия ... где идентификатор пользователя или имя пользователя передается действию.

Ответы [ 2 ]

1 голос
/ 12 октября 2010

Попробуйте:

Router::connect(
    '/users/:id/:action',
    array(
      'controller' => 'users'
      'id' => '[0-9]+') # or [a-zA-Z0-9] for username
);

Также в этих действиях (стена, посуда ...) вам нужно добавить:

$id = $this->params['id'];
0 голосов
/ 14 октября 2010

http://bakery.cakephp.org/articles/view/cakephp-s-routing-explained

<?php
Router::connect(
    '/writings/:username/:action/:id/*', 
    array(
        'controller' => 'articles'
    ),
    array(
        'pass' => array(
            'id',
            'username'
        )
    )
);
?> 

По этому маршруту CakePHP вызывает ваше действие как $ Controller-> show (69, 'phally'), и тогда ваше действие должно выглядеть следующим образом:

<?php
public function show($id = null, $username = null) {
    // $id == 69;
    // $username == 'phally';
}
?> 
...