2016-05-13 68 views
2

使用Cake 2.x我试图将RESTful流量路由到我的用户控制器到我的UserManagement插件。Cakephp RESTful路由与插件

我的路线如下:

// 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中的插件名称也是可能的? –