gpt4 book ai didi

php - 为什么 validate() 方法可以通过 request() 访问?

转载 作者:可可西里 更新时间:2023-11-01 12:36:48 25 4
gpt4 key购买 nike

引用Laravel documentation :

By default, Laravel's base controller class uses a ValidatesRequests trait which provides a convenient method to validate incoming HTTP request with a variety of powerful validation rules

确实如此,阅读代码,App\Http\Controllers\Controller 实际上使用了 ValidatesRequests 特性。 ValidatesRequests 有一个 validate 方法。

对我来说真正奇怪的是,在文档的其他任何地方,validate 方法都是在 $request 对象上调用的。它是这样工作的。我可以使用此代码验证表单:

public function store()
{
$attributes = request()->validate([
'name' => 'required|string|max:255',
]);
// ...
}

但是我没有看到 Request 类中存在任何验证方法。只是文件开头的一个奇怪的注释行:

/**
* @method array validate(array $rules, array $messages = [], array $customAttributes = [])
*/

所以有两件事:

  • 我不知道在 Laravel 文档中该相信什么。
  • 而且我不明白验证是如何在 $request 对象上进行的。

我的实际问题是:

如果我通过 $request 对象使用 validate 方法,我从文档中粘贴的初始引用是否仍然正确?如果是这样,它是如何工作的?

最佳答案

那个“奇怪的评论”是 removed a couple days ago

我相信 RequestFoundationServiceProvider.php 中的 Request::macro('validate', ...) 调用中获取其 validate 函数。有关宏的更多信息,请参见 this article

关于php - 为什么 validate() 方法可以通过 request() 访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47334353/

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