尝试在我的 Package 类中使用 Validator 类。现在有了 Facades,包含类并使用它们变得有点棘手。
use Illuminate\Validation\Validator
...
protected function valid($request)
{
return Validator::make($request, ['url'=>'required|url'])->passes();
}
最终给了我:
PHP Fatal error: Call to undefined method Illuminate\Validation\Validator::make()
这是真的,因为我没有使用外观本身。查看 Validator 类构造函数:
__construct(\Symfony\Component\Translation\TranslatorInterface $translator, array $data, array $rules, array $messages) : void
这就是我需要帮助的地方:)
最佳答案
如果您想在包中使用验证器外观,请将您的用途更改为:
use Validator;
或者:
use Illuminate\Support\Facades\Validator;
或者您可以将验证器工厂的实例(这实际上是生成验证器实例的东西)作为依赖项注入(inject)到类中。我假设您正在与服务提供商设置您的套餐,所以类似这样。
$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();
关于Laravel 4 - 使用包中的验证器进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16852427/