2014-01-21 2 views
1

У меня есть структура MVC, User.
Он управляет тремя типами пользователей, пользователей, клиентов и арендаторов; все это делается с User.
Что мне нужно - это скрытый параметр, который будет добавлен к каждому маршруту, который скажет контроллеру, как это сделать.Добавить аргумент в cakephp 1.3 route

примеры:

/clients/unverified/5 будет маршрут /users/unverified/client/5
и /tenants/unverified/5 будет маршрут /users/unverified/tenant/5

Если у вас есть лучшее представление о том, как это должно быть сделано, я также оценят.

+0

Пожалуйста, объясните ... немного больше для ясности ... – Anubhav

+0

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

ответ

1

Вы можете использовать те же действия контроллера, как показано ниже:

Router::connect('/clients/unverified/:limit', 
       array('controller' => 'users', 'action' => 'unverified', 
       'client','5') 
); 
Router::connect('/tenants/unverified/:limit', 
       array('controller' => 'users', 'action' => 'unverified', 
       'tenants','5') 
); 
Router::connect('/whatever/unverified/:limit', 
       array('controller' => 'users', 'action' => 'unverified', 
       'whatever','5') 
); 

В контроллере пользователей

# $type would be clients/ tenants/ watever 
# $limit would be 5 
function unverified($type='user',$limit=5){ 

} 
1

Пара вариантов выскочить на меня:

1. Использование Router::connect() в /app/config/routes.php:

Этот метод должен привести к ID передается в систему без необходимости указывать его (а также любые другие аргументы).

Router::connect('/clients/unverified/*', array('controller' => 'users', 'action' => 'unverified', 'client')); 
Router::connect('/tenants/unverified/*', array('controller' => 'users', 'action' => 'unverified', 'tenants')); 

More info on routing in Cake 1.3.

2. Создание clients и tenants контроллеры, unverified действия и просто перенаправить их на контроллер users