2

尝试在我的 Package 类中使用 Validator 类。现在有了 Facades,包含类并使用它们变得有点棘手。

use Illuminate\Validation\Validator
...
protected function valid($request)
{
  return Validator::make($request, ['url'=>'required|url'])->passes();
}

最终给了我:

PHP 致命错误:调用未定义的方法 Illuminate\Validation\Validator::make()

这是真的,因为我没有使用 Facade 本身。查看 Validator 类构造函数:

__construct(\Symfony\Component\Translation\TranslatorInterface $translator, array $data, array $rules, array $messages) : void

这就是我需要帮助的地方:)

4

1 回答 1

6

如果您想在包中使用验证器外观,请将您的使用更改为:

use Validator;

或者:

use Illuminate\Support\Facades\Validator;

或者,您可以将验证器工厂的实例(实际上是验证器实例)作为依赖项注入到类中。我假设您正在与服务提供商一起设置您的包裹,所以是这样的。

$this->app->bind('Package', function($app)
{
    return new YourPackage($app['validator']);
});

然后,您应该在构造函数中设置该类的验证器属性。

public function __construct(\Illuminate\Validation\Factory $validator)
{
    $this->validator = $validator;
}

您现在应该能够创建一个新的验证器实例。

return $this->validator->make($request, ['url' => 'required|url'])->passes();
于 2013-05-31T08:27:49.470 回答