如何解决Laravel 7.4 - 在正则表达式之外,有没有办法验证 GET 请求中 URL 字符串的参数?
我有以下形式的网址:
GET /cat/{cat}/meows/{overTime}
我可以编写一个如下所示的控制器方法来捕获值:
public function getMeowsOverTime(Cat cat,int overTime)
我想要的是在到达控制器方法之前验证 {cat}
和 {overTime}
值。
我尝试根据此处的建议创建一个扩展 MeowsOverTimeRequest
的自定义 Illuminate\Http\Request
对象:Laravel 5.7 - Override all() method in Request validation Class to validate route parameters?
那就是:
class MeowsOverTimeRequest extends Request
{
public function authorize()
{
return true;
}
public function all($keys = null)
{
$request = parent::all($keys);
$request['cat'] = $this->route('cat');
$request['overTime'] = $this->route('overTime');
return $request;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'cat' =>
[
'required','integer'
],'overTime' =>
[
'required','integer',Rule::in(Cat::getMeowTimeOptions())
]
];
}
}
但是 $this->route('cat')
和 $this->route('overTime')
都返回 null。如何访问这些变量?
我不想使用 regular expression validation,因为 overTime
受到 Cat::getMeowTimeOptions
返回的内容的限制
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。