Laravel 5 : 成功验证请求函数
Laravel 5 : on success Validation Request function
在 laravel 5 中,我们现在可以像这样使用请求 classes 进行输入验证:
public function store(StoreItemRequest $request)
{
$item = Item::create($request->all());
return 'success';
}
当验证失败时,由于 Request
class 中的 response
函数,我可以得到错误信息:
public function response(array $errors) {
return response()->json(['errors' => $errors]);
}
但是如果验证成功呢?有没有像这样自动触发的功能:
public function ????(){
if($request->ajax())
return response()->json(['success' => true]);
}
注意:要求如果请求是ajax,函数store
的内容不会被执行(就像它不会如果验证失败则执行)。
是的,我在 ValidateWhenResolvedTrait
中找到了 validate
方法,您可以在表单请求中覆盖它 class;
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]));
}
}
暂无此方法。您可以在您的请求中使用一些 "hacks"(例如覆盖 validate
方法)来执行此操作,但我不推荐它。
Request
的想法是将 validation/authorization 移出控制器。如果您将成功的响应移动到 Request
,那么我们会遇到与以前相同的情况(好吧,名称已更改)。
我建议让控制器也处理 ajax:
public function store(StoreItemRequest $request)
{
$item = Item::create($request->all());
if($request->ajax())
return response()->json(['success' => true]);
return 'success';
}
您尝试在请求中实现此目的是否有原因?
在 laravel 5 中,我们现在可以像这样使用请求 classes 进行输入验证:
public function store(StoreItemRequest $request)
{
$item = Item::create($request->all());
return 'success';
}
当验证失败时,由于 Request
class 中的 response
函数,我可以得到错误信息:
public function response(array $errors) {
return response()->json(['errors' => $errors]);
}
但是如果验证成功呢?有没有像这样自动触发的功能:
public function ????(){
if($request->ajax())
return response()->json(['success' => true]);
}
注意:要求如果请求是ajax,函数store
的内容不会被执行(就像它不会如果验证失败则执行)。
是的,我在 ValidateWhenResolvedTrait
中找到了 validate
方法,您可以在表单请求中覆盖它 class;
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]));
}
}
暂无此方法。您可以在您的请求中使用一些 "hacks"(例如覆盖 validate
方法)来执行此操作,但我不推荐它。
Request
的想法是将 validation/authorization 移出控制器。如果您将成功的响应移动到 Request
,那么我们会遇到与以前相同的情况(好吧,名称已更改)。
我建议让控制器也处理 ajax:
public function store(StoreItemRequest $request)
{
$item = Item::create($request->all());
if($request->ajax())
return response()->json(['success' => true]);
return 'success';
}
您尝试在请求中实现此目的是否有原因?