onemoreblock/laravel-validatorjs

基于validatorjs API的Laravel前端表单验证库

dev-master 2021-10-17 09:40 UTC

This package is auto-updated.

Last update: 2024-09-17 16:26:39 UTC


README

此包创建的目的是通过为Laravel和前端都编写一组规则来处理前端表单验证

此库生成表单的前端验证规则并显示相应的错误信息,这一切都是通过定义您的Laravel表单请求来完成的,它还支持Laravel的自定义属性名称和错误消息自定义

** 此库还不够完美,目前不能满足所有用例,但仍然可以满足大多数需求 **

待办事项

  • 生成既支持Laravel又支持Validatorjs的验证规则
  • 添加对** Tailwind CSS**错误的** 支持**(目前仅支持Bootstrap 5的自动错误显示)
  • 添加对添加**自定义验证规则**的支持

快速安装

$ composer require onemoreblock/laravel-validatorjs

要求

配置

$ php artisan vendor:publish --provider="OneMoreBlock\Validatorjs\ValidatorJsServiceProvider"

用法

目前此包仅支持通过使用Laravel表单请求生成validatorjs规则。因此,首先创建一个Laravel表单请求,例如:PostRequest

$ php artisan make:request PostRequest

现在打开生成的PostRequest文件,并确保执行以下操作

  • 将默认扩展类从 FormRequest 替换为 Validatorjs
  • 添加一个 protected 变量 **$tableID **(应用验证的表ID)
  • 添加一个 protected 变量 **$successCallback **(在成功验证时要调用的函数名称)
  • 现在定义您的验证规则,就像之前一样 😃 这里是PostRequest的示例
<?php

namespace App\Http\Requests;

use OneMoreBlock\Validatorjs\Validatorjs;

class PostRequest extends Validatorjs
{
    protected $tableID = 'entries';

    protected $successCallback = 'successCallback';

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'f_name' => 'required|min:20|max:30',
            'l_name' => 'required|min:20|max:30',
            'email'  => 'required|email',
        ];
    }

    /**
     * Get custom attributes for validator errors.
     *
     * @return array
     */
    public function attributes()
    {
        return [
            'f_name' => 'First name',
            'l_name' => 'Last Name',
        ];
    }
    /**
     * Get the error messages for the defined validation rules.
     *
     * @return array
     */
    public function messages()
    {
        return [
            'f_name.required' => 'A :attribute is required',
            'l_name.required' => 'A :attribute is required',
        ];
    }
}

现在以以下方式定义您的控制器

<?php

namespace App\Http\Controllers;

use App\Http\Requests\PostRequest;

class PostController extends Controller
{
    public function index()
    {
        return (new PostRequest)->render('validatorjs.index'); // blade file
    }
}

更新视图blade文件以包含以下内容

  • 为表单分配一个ID
  • 导入所有必需的js脚本
  • 导入/定义与之前定义的相同的成功回调函数名称

视图文件示例

<form method="post" id="{{ $table_id }}">
    @csrf
    <div class="col-md-4">
        <label for="validationCustom01" class="form-label">First name</label>
        <input type="text" class="form-control" id="validationCustom01" name="f_name" value="Mark">
    </div>
    <div class="col-md-4">
        <label for="validationCustom02" class="form-label">Last name</label>
        <input type="text" class="form-control" id="validationCustom02" name="l_name" value="Otto" >
    </div>
    <div class="col-md-4">
        <label for="validationCustom02" class="form-label">Email</label>
        <input type="email" class="form-control" id="validationCustom02" name="email" >
    </div>
    <input type="submit" value="Sumit" class="btn btn-sm btn-primary">
</form>
{!! $scripts !!}

<script type="text/javascript">
    function successCallback(data) { // same name as $successCallback defined in the PostRequest
        // Stuff to do after the validation is passed
    }
</script>

许可证

Laravel-Validatorjs是开源软件,根据MIT许可证授权。