setnemo / autogenerated-messages
用于通过类型自定义 Laravel 验证默认信息的特性
2.4.0
2023-11-07 12:12 UTC
Requires
- php: ^7.4|~8.0.0|~8.1
Requires (Dev)
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: *
- vimeo/psalm: ^4.7
README
本项目将帮助您在 Laravel 项目中根据验证规则自动生成错误信息。
它是如何工作的?
您安装此软件包
composer require setnemo/autogenerated-messages
然后,在您的请求类(继承自 FormRequest)中添加特性
<?php declare(strict_types=1); namespace Awesome\Requests; use Illuminate\Foundation\Http\FormRequest; class NewRequest extends FormRequest { use DefaultMessages; /** Add use trait */ public function rules(): array { return [ 'name' => 'required|string|max:120', 'start_date' => 'required|integer', 'price' => 'nullable|numeric|min:0 ', 'pay_link' => 'nullable|string|url|max:256', 'video' => 'nullable|mimes:mp4,mov,avi', 'confidentiality' => 'required|string|in:public,personal', ]; } }
就这些了!错误信息将根据您的规则生成。
示例
<?php var_export($newRequest->message());
结果
[ 'name.required' => 'name is required', 'name.string' => 'Value for name must be string', 'name.max' => 'Maximal value for name is 120', 'start_date.required' => 'start_date is required', 'start_date.integer' => 'Value for start_date must be integer', 'price.numeric' => 'Key price must be numeric', 'price.min' => 'Minimal value for price is 0', 'pay_link.string' => 'Value for pay_link must be string', 'pay_link.url' => 'Key pay_link must be valid url', 'pay_link.max' => 'Maximal value for pay_link is 256', 'video.mimes' => 'Allowed formats for video: mp4, mov, avi', 'confidentiality.required' => 'confidentiality is required', 'confidentiality.string' => 'Value for confidentiality must be string', 'confidentiality.in' => 'Allowed values for confidentiality: public, personal', ];
支持类型
目前项目支持以下验证类型
[ 'required', 'integer', 'numeric', 'string', 'url', 'in', 'not_in', 'min', 'max', 'mimes', 'email', 'unique', 'json', 'image', 'accepted', 'array', 'boolean', 'regex', 'exists', 'uuid', 'after', 'ip', 'ipv4', 'ipv6', 'mac_address', 'starts_with', 'ends_with', 'doesnt_start_with', 'doesnt_end_with', 'multiple_of' ];
此外,您还可以添加其他 Laravel 验证类型,只需创建此项目的分支并提交 pull request。
或者在您的项目中添加
<?php $this->addRuleNames(['test_rule']); $this->addRulesToMessages(['test_rule' => 'test_message']);
贡献指南
请查阅 贡献指南