2014-02-08 6 views
0

신청서에 하위 부분이 있습니다. 예를 들어, www.example.com/backoffice/user에 보내는 모든 요청은 BackofficeUserController.js으로 리디렉션되어야합니다.경로를 통한 요청 리디렉션 sails.js

나는 sails.js를 config/routes.js와 함께 사용해야한다는 것을 알고있다. 나는 그 방법을 모른다.

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

그러나 그것은 일을하지 않습니다 :

나는이 시도. 어떤 생각? 의사가 동적 경로를 너무 많이 설명하지 않습니다. http://sailsjs.org/#!documentation/routes

답변

1

실제로 중첩 된 컨트롤러의 적절한 사용 사례입니다. sails generate controller backoffice/user을 수행하면 Backoffice/UserController 컨트롤러 클래스에 해당하는 controllers/backoffice/userController.js 파일이 생성됩니다. /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 내부의 방법을 사용할 수 있습니다) 당신의 UserController에서
module.exports = { 
    '/backoffice/user/:id': 'UserController.backoffice' 
}; 

다음

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

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

여러 가지 방법으로 동일한 결과를 얻을 수 있습니다. 내가 개인적으로이 문제에 뛰어 들어 가지 않았기 때문에 최선의 접근법이 무엇인지 확신 할 수 없습니다. 그러나 저는 Sailsjs 협약을 고수 할 것을 제안합니다.