2014-02-08 79 views
0

我想在我的应用程序中有一个子部分: 例如,发送到www.example.com/backoffice/user的所有请求都应该在我的BackofficeUserController.js中重定向。通过路由重定向请求sails.js

我ue sails.js,我知道我必须这样做config/routes.js,我只是不知道如何。

我尝试这样做:

'/backoffice/:controller/:action?': { 
    controller : 'backoffice' + ':controller', 
    action  : ':action' 
} 

但它没有工作。任何想法? 该文档没有太多解释动态路由。 http://sailsjs.org/#!documentation/routes

回答

1

这实际上是嵌套控制器的体面用例。如果你做的是sails generate controller backoffice/user,你最终将得到一个controllers/backoffice/userController.js文件,该文件对应于一个名为Backoffice/UserController的控制器类。所有到/backoffice/user/:action的请求都会自动发送到该控制器。

+0

你是说如果我在内部办公室里创建控制器,他们会自动使用吗?我需要在命令行中执行吗? – Vadorequest

+0

我实际上在第一个地方尝试过,在写这封邮件之前它并没有工作。我在这里再次尝试(0.9.8),但仍然没有。我尝试使用命令行生成的控制器,但仍然无法正常工作。 – Vadorequest

+0

而我的config/routes.js不包含比'/'路线更多的东西。 – Vadorequest

1

将所有捕获的参数传递给请求对象上的控制器的操作方法。也许你应该在定义路由时更明确一些,或者使用UserController作为代理。

你可能有后勤用户?

'/user/backoffice': 'UserController.backoffice' 

或有后台控制器处理用户请求

'/backoffice/user/:id': 'BackofficeController.user' 

或(我不知道,如果控制器都是全局,但你可能需要从另一个控制器控制器,并使用内部UserController的它的方法)

module.exports = { 
    '/backoffice/user/:id': 'UserController.backoffice' 
}; 

,然后在UserController的

var BackofficeController = require('./BackofficeController'); 

module.exports = { 
    user: function(req, res) { 
    // Do something using BackOffice methods conditionally? 
    } 
}; 

许多方法来实现相同的结果。不知道最好的方法是什么,因为我没有亲自遇到这个问题。但我会建议坚持Sailsjs惯例。