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

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


最终给了我:


PHP致命错误:调用未定义方法
照亮\验证\验证器:: make()


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

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


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

最佳答案

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

use Validator;


要么:

use Illuminate\Support\Facades\Validator;


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

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


然后,您应该在构造函数中的该类上设置Validator属性。

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


现在,您应该可以创建一个新的验证器实例。

return $this->validator->make($request, ['url' => 'required|url'])->passes();

关于laravel - Laravel 4-使用包中的验证器进行验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16852427/

10-16 15:28
查看更多