我想从路由中获取请求参数。更具体地说,在我的情况下,我希望将这些参数发送到绑定控制器中的函数。
从较旧的文档中,看起来曾经有用于request.param()
和request.params()
的函数,但是我在较新的文档中找不到相同的功能。
尝试这些功能时,我得到类似的东西
request.params is not a function
请注意,我引用的"较新"文档是 4.0,而不是 4.1(这是我正在使用的(,但是当尝试像 4.1 文档中的request.all()
这样的函数时,我会收到类似的"不是函数"错误。我不确定我是否犯了一些错误,或者这个文档是否过时了。
在用一些调试语句分解对象之后,即。Object.keys(request)
后跟Object.keys(request.params)
,看起来有一个"params"成员,但它是一个对象/数组,而不是一个函数。它的值可以通过request.params.the_parameter
或request.params['the_parameter']
访问。
从控制器访问请求参数的结果代码如下(我正在创建一个用户邀请系统(:
路线.js
// a "?" is inserted after the invite_code parameter to indicate that it is optional
Route.get('/invitation/:invite_code?', 'UserController.invitation').as('invitation')
我的控制器.js
class UserController {
async invitation({ view, request }) {
// Pass invite code to the view so it can be injected into a form
// (this way invite codes can be built into links, or inserted manually)
return view.render('account.invitation', { invite_code: request.params.invite_code })
}
}
class UserController {
async invitation({ view, request, params }) {
// Pass invite code to the view so it can be injected into a form
// (this way invite codes can be built into links, or inserted manually)
return view.render('account.invitation', { invite_code: params.invite_code })
}
}