setnemo/autogenerated-messages

用于通过类型自定义 Laravel 验证默认信息的特性

2.4.0 2023-11-07 12:12 UTC

This package is auto-updated.

Last update: 2024-09-07 14:02:00 UTC


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']);

贡献指南

请查阅 贡献指南