あなたの場合、{% render "AcmeBundle:Acme:menu" %}これも各ページに追加する必要があります。エクスプレスでは、同じタスクをはるかに簡単に実行できると思います。そして、ここにはさまざまなオプションがあります。最初のオプションは、次userのような特定のリクエストハンドラでミドルウェアを使用することです
ユーザーを見つけてプロパティを設定するだけのエクスプレスミドルウェアを追加しapp.localsます。app.localsすべてのjadeファイルで表示されます。たとえば、この単純なミドルウェアで十分です。
var user = function(req, res, next)
{
var user = db.find(...);
app.locals({user: user});
next(); // Do not render the page here, call the next()
}
次に、ルーティングで次のように使用var userします。
app.get('/your_desired_url', user, function(req, res) {
res.render('your_required_jade_file')
});
このメソッドは、必要な任意の要求ハンドラーで使用できます。例えば、
app.get('/your_desired_url2', user, function(req, res) {
res.render('your_required_jade_file')
});
app.get('/your_desired_url2', user, function(req, res) {
res.render('your_required_jade_file')
});
2番目のオプションでは、このミドルウェアを次のような一般的なミドルウェアとして追加できます。
app.use(function(req, res, next) {
var user = db.find(...);
if(user) app.locals({user: user});
else app.locals({user: null});
next(); // Do not render the page here, call the next()
});
2番目のケースでは、すべてのリクエストがこの関数を介して渡されるため、.jadeファイルではuservarabileを常に使用できます。
.jade構造では、次を使用できます
layout.jade
!!! 5
html
head
body
include userbar
block content
そして例えばdashboard.jade:
extends ./layout
block content
// Your dashboard specific content goes here..
これで問題が解決することを願っています。