我使用Dingo API和FormRequest来验证HTTP API请求。我有这些规则:
switch ($this->method()) {
case 'POST':
return [
'file' => 'required|mimes:pdf,png,jpeg,jpg',
'title' => 'required|unique:documents'
];
case 'PUT':
case 'PATCH':
return [
'id' => 'required',
'filename' => 'unique:documents,filename' . $this->route("id"),
'title' => 'unique:documents,title' . $this->route("id")
];
case 'DELETE':
return [
'id' => 'required'
];
}
然而,我意识到在POST的情况下我需要有两个不同的规则。如果请求中存在某个变量,那么我不需要该文件。
例如,如果collected
为真或存在于我通过HTTP请求发送的对象上,那么应该需要file
。否则不会。
我目前的解决方法是将这两个人分成不同的控制器,但我不满意,我正在寻找实际规则的调整。
有什么想法吗?