//<project-path>/lang/en/validation.php
<?php
return [
'accepted' => 'The :attribute must be accepted.',
// ... rest of the validations
// Copy it from Laravel.
];
1.创建验证工厂并使用它
//<project-path>/scr/Validation/Validator.php
<?php
namespace <insert-your-namespace-here>;
use Illuminate\Validation\Factory;
class Validator
{
protected Factory $validator;
public function __construct()
{
$this->validator = new Factory(trans());
}
}
5条答案
按热度按时间z0qdvdin1#
以下是当前版本的解决方案:Laravel 5.4.composer.json文件:
{ "name": "Validation standalone", "require": { "php": ">=5.6.4", "illuminate/validation": "5.4.*", "illuminate/translation": "5.4.*" } }
请注意,我们还必须要求“照明/翻译”:“5.4.*"。然后在php文件中:
在这里,我故意漏掉了为验证提供的数据中的“body”字段,因此显示了一个验证错误。
wh6knrhe2#
至于2021年初,the solution from @vivanov here与Laravel 8包完美兼容。
这里我添加了使用默认Laravel验证消息的功能,因为使用自己的验证消息太烦人了。
下面是你必须在@vinvanov解决方案中更改的内容。
1.更新
composer.json
1.将Laravel validation messages file复制到
project/laravel/en/validation
文件夹。1.修改@ivanov的解决方案代码如下(只反映更改)
在我的gist中查看完整代码和更多注解;
这就是了。你已经有了为你工作的默认Laravel消息。
Laravel验证docs
PS:Credits也从Jeff转到this blog post。
PPS:这是辉煌的,尽管版本从5.6跳到8.25的软件包接口是稳定的,无缝工作。如此成熟和有见地的开源态度和对开发者的极大关怀来自Taylor奥特韦尔。只有当你在现代PHP框架之外,在一个糟糕的PHP代码库中工作时,你才能体会到这一点的最大便利。
iih3973s3#
我不想建议这个,但Laravel验证器可能不是你想要的。我建议看看Symfony或Zend Framework(2+)中的验证器类。它们作为独立的验证器工作得很好,事实上,我目前正在Laravel项目中使用ZF2表单类和验证器,因为Laravel表单和验证器类还没有达到标准。
这可能不是你想听到的答案,但从长远来看,它可能会为你节省一些痛苦。
vlurs2pr4#
我也在想同样的问题,一年后,我发现德拉Babel的答案实在是太差了。我确实找到了下面的Gist,spekkionu有一个相当简单的设置让你开始。(它在我的机器上工作。?;P)它展示了如何为工厂制作翻译器等。当您使用composer导入
illuminate/validation
时,这些都包括在内。希望有帮助:https://gist.github.com/spekkionu/e9103993138e666f9f63
最好
oyxsuwqo5#
不幸的是,如果你打算使用Laravel的自定义验证规则,那么前面的解决方案都不起作用。
你可以在我的gist中查看我的解决方案。
非常感谢@vivanov和@Valentine-shi。
自定义规则正在调用全局
trans()
函数。这就是为什么它在helpers.php
中并通过Composer注册的原因。这个
trans()
函数也用于创建验证器工厂。1.为全局函数添加自定义帮助器php文件。
1.在composer.json中注册
1.添加区域设置文件
1.创建验证工厂并使用它
我敢肯定你可以玩所需的版本。