在laravel 5中,我们现在可以使用Request类进行输入验证,如下所示:
public function store(StoreItemRequest $request)
{
$item = Item::create($request->all());
return 'success';
}
验证失败后,我可以通过response
类中的Request
函数获取错误:
public function response(array $errors) {
return response()->json(['errors' => $errors]);
}
但如果验证成功怎么办?有没有像这样自动触发的功能:
public function ????(){
if($request->ajax())
return response()->json(['success' => true]);
}
注意:必须如果请求是ajax,则函数store
的内容不会被执行(就像验证失败时不会执行一样)。 / p>
答案 0 :(得分:1)
是的,我在validate
中找到了ValidateWhenResolvedTrait
方法,您可以在表单请求类中覆盖它;
public function validate(){
$instance = $this->getValidatorInstance();
if($this->passesAuthorization()){
$this->failedAuthorization();
}elseif(!$instance->passes()){
$this->failedValidation($instance);
}elseif( $instance->passes()){
if($this->ajax())
throw new HttpResponseException(response()->json(['success' => true]));
}
}
答案 1 :(得分:0)
目前没有这样的方法。您可以在请求中使用一些“黑客”(例如覆盖validate
方法)执行此操作,但我不建议这样做。
Request
的想法是将验证/授权移出控制器。如果您将成功的回复移至Request
,那么我们的情况与之前相同(好的,名称已更改)。
我建议让控制器处理ajax:
public function store(StoreItemRequest $request)
{
$item = Item::create($request->all());
if($request->ajax())
return response()->json(['success' => true]);
return 'success';
}
您是否有理由在请求中尝试实现此目的?