gpt4 book ai didi

php - Laravel 5.6 $this->validate vs Validator::make()

转载 作者:行者123 更新时间:2023-12-04 10:34:01 28 4
gpt4 key购买 nike

我看到还有其他一些问题,他们问 $this->validate 之间的区别是什么和 Validator::make() .他们并没有真正回答我想知道的概念性问题。

这些都有正确的用途吗?比如什么时候使用一个和另一个?

我目前如何使用它是在我的 API 类中我使用 if else 和 $validator::make() (如下所示)在程序的 Web 部分中,我使用 $ this->validate() (也在下面)

这是使用它的正确方法吗?

$validator::make:

public function store(Request $request)
{
$validator = Validator::make($request->all(),[
'name' => 'required',
'url' => 'required',
'isPublic' => 'required'
]);

if($validator->fails()){
return response($validator->messages(), 200);
} else {

Helpers::storeServer($request);

return response()->json([
'message'=> ['Server Stored']
]);
}
}

$this->验证:
 public function store(Request $request)
{

$this->validate($request, [
'name' => 'required',
'url' => 'required',
'isPublic' => 'required'
]);

Helpers::storeServer($request);

return redirect('dashboard')->with('success', 'Server stored');
}

最佳答案

不,他们以两种不同的方式做同样的事情。我的意思是字面意思,$this->validate()调用 make()验证类上的方法。如果您查看 ValidatesRequests.php,由您的 Controller 扩展的 controller.php 实现。 validate()方法调用:

$validator = $this->getValidationFactory()
->make($request->all(), $rules, $messages, $customAttributes);

所以它最终使用了 make()方法最终。它的处理方式有所不同,因为 $this->validate调用:
if ($validator->fails()) {
this->throwValidationException($request, $validator);
}

所以使用 Validator::make()将允许您自己处理异常,而不是 $this->validate()自动为您抛出验证异常。这对于在重定向之前做一些事情很有用。您在第一个示例中展示了这一点,因为您在决定如何处理之前检查验证是否失败。在第二个示例中,您知道如果验证失败,它将自动拒绝请求。

关于php - Laravel 5.6 $this->validate vs Validator::make(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51194288/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com