是否可以在不依赖注入的情况下验证FormRequest?
问题描述:
我正在使用FormRequest
来验证删除请求,但我不需要访问我的控制器内部的请求。我只需要它进行验证。是否可以在不依赖注入的情况下验证FormRequest?
我发现未使用的变量令人讨厌,但我无法看到the docs中的任何内容,这表明我可以调用该类上的任何内容来验证它。
形式要求:
class DeleteList extends FormRequest
{
protected $errorBag = 'delete_list';
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'confirm' => 'required|accepted'
];
}
}
控制器:
public function postDelete(DeleteList $request, ListService $listService, $site, $list)
{
$listService->delete($site, $list);
return redirect()->route('site.lists', ['site' => $site]);
}
答
你可以这样做:
public function postDelete(ListService $listService, $site, $list)
{
$this->validate(request(), ['confirm'=>'required|accepted']);
$listService->delete($site, $list);
return redirect()->route('site.lists', ['site' => $site]);
}
但我个人喜欢你的更好的解决方案,即使这意味着有一个未使用的变量。
我离开验证控制器内部的原因是为了能够在需要的情况下复制验证规则,它只是令人讨厌的是它未被使用! –