所以我安装了这个包https://packagist.org/packages/illuminate/validation使用命令 composer require illuminate/validation
进入我的项目,在那里你可以获得独立版本的 Laravels 验证器。然后,当我尝试像文档说的那样使用它时,您应该 https://laravel.com/docs/8.x/validation并尝试像这样实现它
$validated = Validator::make($data, [
'token' => 'required',
'email' => 'required',
'password' => 'required',
])->validate();
我收到一条 'message' => 'A facade root has not been set.',
这也是 $data
对象
array (
'token' => 'c11019348c3876f033603a0d0030ad3f0c9ec7d7ae211a49',
'email' => 'ewaeaw',
'password' => 'ewaeaw',
),
所以我是否需要在某处调用库或者我做错了什么因为包的 Github 自述文件只是说 https://github.com/illuminate/validation [只读] Illuminate Validation 组件的子树拆分(参见 laravel/framework) 所以我缺少哪些步骤,所以它工作正常,以便我可以将它实现到我的项目中
我也调查了这个 Fail to make Laravel 4's Validator class work outside the framework它说你可以用这行 $factory = new\Illuminate\Validation\Factory(new\Symfony\Component\Translation\Translator('en'));
但是 \Illuminate\Validation\Factory
类不再存在。因为命名空间是 Illuminate\Support\Facades\Validator
prob cause it 9 years old?所以有人有任何最新的方法来做到这一点?还查看供应商 map Facades
文件夹中不存在任何工厂类
最佳答案
对我来说,解决方案是在 Beri 对问题本身的评论中给出的,他发布了一个 link一种方法,该方法也适用于 illuminate/validation
类的最新版本 (9,14)。我会把它贴在这里作为答案。因为我在谷歌上找到的许多答案不适用于较新版本的 illuminate/validation
类。所以我认为它可能会帮助其他人。
它需要:
"require": {
"illuminate/filesystem": "^9.14",
"illuminate/translation": "^9.14",
"illuminate/validation": "^9.14"
}
jeff 在他的 website 上创建的这个不错的类:
<?php
use Illuminate\Validation;
use Illuminate\Translation;
use Illuminate\Filesystem\Filesystem;
class ValidatorFactory
{
private $factory;
public function __construct()
{
$this->factory = new Validation\Factory(
$this->loadTranslator()
);
}
protected function loadTranslator()
{
$filesystem = new Filesystem();
$loader = new Translation\FileLoader(
$filesystem, dirname(dirname(__FILE__)) . '/lang');
$loader->addNamespace(
'lang',
dirname(dirname(__FILE__)) . '/lang'
);
$loader->load('en', 'validation', 'lang');
return new Translation\Translator($loader, 'en');
}
public function __call($method, $args)
{
return call_user_func_array(
[$this->factory, $method],
$args
);
}
}
它需要一个翻译文件,需要放在项目文件夹lang/en/validation.php
任何语言的翻译都可以在github上找到。
如果操作正确,您可以像这样开始使用验证类:
$validator = (new ValidatorFactory())->make(
$data = ['email'=>'thisfailsasemail'],
$rules = ['email'=>'required|email']
);
// $validator->fails();
// $validator->passes();
// $validator->errors();
关于php - 让 Laravel 8 的 Validator 类在框架之外工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71016376/