2016-05-13 3 views
2

Использование Cake 2.x Я пытаюсь перенаправить трафик RESTful на мой контроллер пользователя в мой плагин UserManagement.Cakephp RESTful routing with Plugin

Мои маршруты являются следующие:

// re-redirect root traffic to login 
Router::connect('/', array('plugin'=>'UserManagement','controller' => 'Users', 'action' => 'login')); 

CakePlugin::routes(); 
Router::mapResources(['users']); 

Router::parseExtensions(); 

Я также попытался:

Router::mapResources(['UserManagement']); 

Когда я называю resful URL я получаю следующее сообщение об ошибке:

users/1.json 

{ 
    "code": 404, 
    "name": "Action UsersController::51() could not be found.", 
    "message": "Action UsersController::51() could not be found.", 
    "url": "\/users\/51.json" 
} 

Заранее спасибо ,

ответ

1

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

Router::mapResources('UserManagement.Users'); 

Этой воли Конечно, также требуют использовать имя модуля в запросе URL, то есть

/user_management/users/51.json 

вместо только

/users/51.json 

Если вы хотели использовать последний, но все же подключились к плагину, тогда вы можете попробовать опцию prefix, то есть поставить значение по умолчанию /, что останавливает использование маршрутизатора от имени плагина в качестве префикс (не путать с фактическим prefix routing).

Router::mapResources('UserManagement.Users', array(
    'prefix' => '/' 
)); 

Смотрите также

+0

спасибо, но что до сих пор не работает - 404 "имя": «Действие UsersController :: 51 () не удалось найти. ", –

+0

@AlanA Вероятно, потому что вам не хватает вилки в имени в URL-адресе, то есть вы обращаетесь к '/ users/51.json', а не к требуемому'/user_management/users/51.json'. Если вы используете предыдущий формат, то есть используя '/ users/...' при подключении к плагину, то укажите это в свой вопрос. – ndm

+0

Да, я использовал только имя контроллера в url, как написано в моем вопросе. Использование имени плагина работает хотя :) Если я хочу просто использовать имя пользователя, а не имя плагина в URL-адресе, это также возможно? –