我想在routes.js
文件
'/first': {
controller: 'PageController',
action: 'viewPage',
page: 'first'
},
'/another': {
controller: 'PageController',
action: 'viewPage',
page: 'another'
},
'/last': {
controller: 'PageController',
action: 'viewPage',
page: 'last'
},
因此,有一组通用页面可以共享同一个控制器 - 这些都不需要这些控件,因为它们会做同样的事情,只需加载不同的视图并加载不同的模型中的数据取决于请求的页面。
因此,我需要将路由提供商之类的'page'
变量传递给PageController
,然后我可以在PageController.viewPage
中执行此操作。 (我意识到上述路线文件中的'page'
变量无效,它只是为了展示我想要实现的目标。)
我怎样才能达到这样的目标?
答案 0 :(得分:3)
您可以在路线上发送参数:
'/first/:page': {
controller: 'PageController',
action: 'viewPage',
page: 'first'
},
'/another/:page': {
controller: 'PageController',
action: 'viewPage',
page: 'another'
},
'/last/:page': {
controller: 'PageController',
action: 'viewPage',
page: 'last'
},
在您的控制器中:
var page = req.param('page');
res.view('index/' + page, { // Where page is the page parameter and name of your page.
stuff: stuff
});
现在您可以像这样调用端点页面:
/第一/第1页
/另一/第2页
/最后/ PAGE3
修改强>
您还可以将页面与slug名称一起存储在数据库中,并执行以下操作:
'/:slug': {
controller: 'PageController',
action: 'viewPage',
},
然后使用req.param('slug');
从数据库中查询您的页面数据,以便为视图加载正确的数据。
如果是多层路线,您可以使用
/*
然后req.route
将包含您的查找。