如何从具有已存在的验证器类的命名空间调用验证器



我正在尝试在phpspec中测试一个调用Laravel Validator::make函数(http://laravel.com/docs/4.2/validation)的函数

但是,我正在尝试从已经采用Validator类名的命名空间调用相同的函数。如何调用文档中描述的函数?

失败的解决方案:

尝试 1

return IlluminateValidationValidator::make($values,$rules);

给我

Call to undefined method IlluminateValidationValidator::make()

尝试 2

return IlluminateValidationFactory::make($values,$rules);

给我

Using $this when not in object context in /vendor/laravel/framework/src/Illuminate/Validation/Factory.php on line 92. Factory

尝试 3

use Validator;

给我

Cannot declare class IsoformValidator because the name is already in use

尝试 4

use Validator as DefaultValidator;

给我

Class 'DefaultValidator' not found
return IlluminateSupportFacadesValidator::make($values,$rules);

这将导致phpspec中的错误,但这无法避免。虽然Validator::make看起来像一个静态函数 - 在幕后它实际上是在返回一个实例。因为我使用的是phpspec,所以没有创建该实例,因此出现了错误。

尝试使用单个正斜杠来引用全局命名空间:

return Validator::make($values,$rules);

我解决了这个问题。只需从vendorlaravelframeworksrcIlluminateValidationValidator.php中删除use Validator,然后将use Validator代码添加到控制器即可。然后,您就可以采取行动了。

$validator = Validator::make($request->all(), $rules);

相关内容

  • 没有找到相关文章

最新更新