私はSailsJSを使ってWebアプリケーションを開発しています。別のフロントエンドと管理者のレイアウトを持つ他のアプリに似ています。SailsJSアプリ内で複数のレイアウトを使用するには?
私はデフォルトのビューエンジン 'ejs'を使用しています。 フロントエンドと管理サイトに別々のレイアウトを使用する方法を教えてください。 アクションごとに特定のレイアウトを使用できますか?
多くのおかげで、Sails.js Documentationから
・アイングエン
私はSailsJSを使ってWebアプリケーションを開発しています。別のフロントエンドと管理者のレイアウトを持つ他のアプリに似ています。SailsJSアプリ内で複数のレイアウトを使用するには?
私はデフォルトのビューエンジン 'ejs'を使用しています。 フロントエンドと管理サイトに別々のレイアウトを使用する方法を教えてください。 アクションごとに特定のレイアウトを使用できますか?
多くのおかげで、Sails.js Documentationから
・アイングエン
:
少なくともEJSで、代わりに地元のレイアウトを使用してカスタムレイアウトを示すのは、使用しなければなりません_layoutFile:
res.view({
_layoutFile: 'relativePathToYourCustomLayoutFromTheTargetView.ejs'
});
使用したいレイアウトへのパスは、レンダリングしているビューを基準にして指定する必要があります。あなたがUserControllerでのcreateアクションにいるのであれば、カスタムレイアウトにビュー(ビュー/ユーザー/ create.ejs)、相対パスを描画するには、次のようになります。../staticSiteLayout.ejs
PROJECT FOLDER
└── views
├── staticSiteLayout.ejs
├── layout.ejs
└── user
└── create.ejs
UPDATE:
ドキュメントは少しオフコードからあるように移動するための方法は以下の通りである現在の(v0.9.8)バージョンので、ようだ:
あなたは、このような別のレイアウトを設定することができ帆0.10でmodule.exports = {
index: function(req, res){
res.view({ layout: 'layoutadmin' });
}
}
あなたのコントローラで:
// override the layout to use another
res.locals.layout = 'layouts/layout2';
return res.view('test');
詳細な説明here。
あなたの質問をスパムして申し訳ありませんが、私のアプリには同様のソリューションが必要です。 routes.jsでレイアウトを定義することは素晴らしいことでしょう。たとえば/ admin/*は1つのレイアウトを使用します。/pidはコントローラの中に潜んでいるので、静的なレイアウトパスでオーバースピードします。私はこの概念を試してみましたが、私はまた、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 });
レイアウト:
ヌル=なし
'フォルダ/レイアウト' =あなたのレイアウト
帆のv0.12でその機能していません – shuboy2014
、あなたがレイアウトを設定する必要がある場合新しいフォルダ(例えば、「レイアウト」)を作成し、レイアウトファイルをプッシュすることができます。
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