2014-02-08 75 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慣例。