💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## lumen 自定义验证规则 Lumen 提供了许多有用的验证规则。但你可能想自定义一些规则。注册自定义验证规则的方法之一,就是使用 Validator[facade](https://learnku.com/docs/laravel/5.1/facades)中的`extend`方法,让我们在[服务提供者](https://learnku.com/docs/laravel/5.1/providers)中使用这个方法来自定义注册的验证规则: ~~~php <?php namespace App\Providers; use Validator; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { /** * 启动所有应用程序服务。 * * @return void */ public function boot() { Validator::extend('foo', function($attribute, $value, $parameters, $validator) { return $value == 'foo'; }); } /** * 注册服务提供者。 * * @return void */ public function register() { // } } ~~~ 自定义的验证闭包接收四个参数:要被验证的属性名称`$attribute`,属性的值`$value`,传入验证规则的参数数组`$parameters`,及`Validator`实例。 除了使用闭包,你也可以传入类和方法到`extend`方法中: ~~~php Validator::extend('foo', 'FooValidator@validate'); ~~~ #### 自定义错误消息 另外你可能还需要为自定义规则来定义一个错误消息。这可以通过使用自定义内联消息数组或是在验证语言包中加入新的规则来实现。此消息应该被放在数组的第一级,而不是被放在`custom`数组内,这是仅针对特定属性的错误消息: ~~~php "foo" => "你的输入是无效的!", "accepted" => ":attribute 必须被接受。", // 其余的验证错误消息... ~~~ 当你在创建自定义验证规则时,你可能需要定义保留字段来取代错误消息。你可以像上面所描述的那样通过`Validator`facade 来使用`replacer`方法创建一个自定义验证器。通过[服务提供者](https://learnku.com/docs/laravel/5.1/providers)中的`boot`方法可以实现: ~~~php /** * 启动所有应用程序服务。 * * @return void */ public function boot() { Validator::extend(...); Validator::replacer('foo', function($message, $attribute, $rule, $parameters) { return str_replace(...); }); } ~~~