我正在使用SailsJS開發一個Web應用程序。我的應用程序與其他擁有單獨的前端和管理佈局的應用程序類似。如何在SailsJS應用程序中使用多個佈局?
我使用默認視圖引擎'ejs'。 你可以請我幫助我如何使用單獨的佈局前端和管理網站? 我可以爲每個動作使用特定的佈局嗎?
非常感謝,
映阮
我正在使用SailsJS開發一個Web應用程序。我的應用程序與其他擁有單獨的前端和管理佈局的應用程序類似。如何在SailsJS應用程序中使用多個佈局?
我使用默認視圖引擎'ejs'。 你可以請我幫助我如何使用單獨的佈局前端和管理網站? 我可以爲每個動作使用特定的佈局嗎?
非常感謝,
映阮
至少在EJS,而不是表明與佈局本地您的自定義佈局,您必須使用_layoutFile:
res.view({
_layoutFile: 'relativePathToYourCustomLayoutFromTheTargetView.ejs'
});
您想要使用的佈局路徑應該相對於您渲染的視圖指定。所以,如果你在UserController中的創建動作的時候,呈現視圖(視圖/用戶/ create.ejs),相對路徑至您的自定義佈局可能是:../staticSiteLayout.ejs
PROJECT FOLDER
└── views
├── staticSiteLayout.ejs
├── layout.ejs
└── user
└── create.ejs
UPDATE:
好像文檔有點過來自碼,所以對於當前(v0.9.8)版本的路要走如下:
module.exports = {
index: function(req, res){
res.view({ layout: 'layoutadmin' });
}
}
在帆0.10,您可以設置不同的佈局像這樣在你的控制器中:
// override the layout to use another
res.locals.layout = 'layouts/layout2';
return res.view('test');
詳細解釋here。
對不起,您的問題發送垃圾郵件,但我需要一個類似的解決方案爲我的應用程序。在routes.js中定義佈局會很棒,例如/ admin/*會使用一個佈局,例如。/app/*會使用其他的,等等。因爲它是一個皮塔,可以潛入控制器,並用靜態佈局路徑對它們進行過濾。我想這個概念,但它似乎是唯一的工作,如果我也在routes.js定義控制器配置文件,例如:
module.exports.routes = {
'/admin/*' : {
controller: 'AdminController',
action: 'index',
locals: {
layout: 'admin/layout'
}
}
};
這並不工作,但對於路由管理所有行動統一到同一個控制器,這當然是錯誤的。如果我省略了控制器的一部分,這一概念總是使用默認視圖/ layout.ejs和地方沒有設置:
module.exports.routes = {
'/admin/*' : {
locals: {
layout: 'admin/layout'
}
}
};
這並不工作,但它是理想得到它的方式。
如果您需要在控制器中設置視圖和佈局(Sails v0。11):
res.view('auth/login', { layout: null });
佈局:
空=無
'文件夾/佈局'=佈局
其不起作用 – shuboy2014
在帆v0.12,如果你需要設置佈局你的控制器,你可能會創建一個新文件夾(例如「佈局」)並推送佈局文件。
res.view('auth/login', {layout: layout/my_file_layout}
你也可以這樣做:
res.locals.layout = "layout/my_file_layout";
res.view('auth/login');
我嘗試這一點,但好像它不工作。這是我的代碼:'module.exports = { \t指數:功能(REQ,RES){ \t \t res.view({ \t \t _layoutFile:」 ../layoutadmin.ejs' \t \t}); \t} }' – anhnt
你有什麼錯誤? – bredikhin
它總是呈現我在config/views.js中定義的默認佈局 – anhnt