【问题标题】:Call to Undefined method Illuminate\Support\Facades\Validator::make() in Laravel 5.4在 Laravel 5.4 中调用未定义的方法 Illuminate\Support\Facades\Validator::make()
【发布时间】:2017-08-28 14:46:07
【问题描述】:

我只是尝试使用 Laravel Validator Facade 实现一个简单的验证。但它一直在下面给我这个错误:

致命错误:在 C:\xampp\htdocs..\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php 中调用未定义的方法 Illuminate\Support\Facades\Validator::make()第 221 行

下面是我的代码:

use Validator;

/**
 * Validate the tenant's credentials
 *
 * @param array $data
 * @return bool
 */
public function validate(array $data)
{
    $data = array_only($data, ['email', 'href']);

    $validator = Validator::make($data, $this->rules);

    if ($validator->passes()) return true;

    $this->errors = $validator->messages();

    return false;
}

【问题讨论】:

  • 尝试将反斜杠添加到 Facade 命名空间 use \Validator
  • 我做到了。它仍然显示相同的错误。我不知道我做错了什么。在最终发布到这里之前,我已经使用谷歌搜索过。对我能做什么有更多想法吗?
  • 尝试:使用Illuminate\Support\Facades\Validator
  • 我已经尝试过了,但仍然显示相同的错误。请问还有更多的想法吗?
  • 你也能显示你的rules数组吗?

标签: php laravel validation


【解决方案1】:

如果一切都失败了,你应该尝试通过删除 vendor/ 目录并运行 composer install 来重新构建 Laravel 应用程序。

【讨论】:

  • 这似乎有效。但现在我的测试显示JobBoard\Tests\Application\Recruitment\TenantRegistrationTest::should_only_accept_valid_email_addresses ReflectionException: Class validator does not exist
  • 我建议您将验证器从 IOC 中拉出来对其进行测试。 IE。将所有测试 Facade 调用替换为 $this->app['validator']->make($data, $rules);。友情提醒,应尽可能少使用外观 :)
【解决方案2】:

检查“Illuminate\Validation\ValidationServiceProvider”是否在此文件中可用
应用程序/配置/app.php 如果没有,则添加此行 'Validator' => Illuminate\Support\Facades\Validator::class,

【讨论】:

  • 它在那里可用并且仍然显示错误。我真的不知道缺少什么。一切似乎都完好无损,但我仍然收到错误。
【解决方案3】:

在脚本顶部使用它而不是长命名空间的外观

use Validator;

一切都会好起来的

【讨论】:

  • Thiis 正是我用过的。请再次阅读我的帖子。
  • 这节省了我的时间。谢谢
猜你喜欢
  • 2023-03-27
  • 2016-04-03
  • 1970-01-01
  • 2019-10-15
  • 2020-01-24
  • 2019-03-04
  • 2023-03-24
  • 2019-05-14
  • 2021-10-29
相关资源
最近更新 更多