manzadey/request-rules-fill

用于创建Laravel请求规则的类

v1.1 2020-08-20 18:56 UTC

This package is auto-updated.

Last update: 2024-09-25 08:34:04 UTC


README

(个人看法)此类旨在优雅且简单地填充请求验证规则。

安装

composer require manzadey/request-rules-fill

如何使用

use Manzadey\RequestRulesFill\RequestRulesFill;

$rules = new RequestRulesFill;

添加字段和验证规则

$rules->fields('name', 'description')->rule('string', 'required');

替换字段中的规则

$rules->replaceRule('slug', 'unique:articles', Rule::unique('articles')->ignore($this->route('article')->id));

向字段添加规则

$rules->addRuleToField('slug', 'string', 'min:2');

以数组形式输出规则

$rules->get();

使用此类的直观示例:创建名为 ArticleStoreRequest 的类,在其中创建方法 makeRules 并创建新的 RequestRulesFill 对象

namespace App\Http\Requests\Admin\Article;

use Manzadey\RequestRulesFill\RequestRulesFill;
use Illuminate\Foundation\Http\FormRequest;

class ArticleStoreRequest extends FormRequest
{
    public function rules() : array
    {
        return $this->makeRules()->get();
    }

    public function makeRules() : RequestRulesFill
    {
        $rules = new RequestRulesFill();
        $rules->fields('show', 'top')->rule('nullable', 'boolean');
        $rules->fields('name')->rule('required', 'string', 'min:3');
        $rules->fields('slug')->rule('nullable', 'string', 'alpha_dash', 'min:3', 'unique:articles');
         $rules->fields('description', 'description_short')->rule('nullable', 'string');
         
        return $rules;
    }
}

接下来创建名为 ArticleUpdateRequest 的类,它将继承 ArticleStoreRequest 并使用其规则

namespace App\Http\Requests\Admin\Article;

use Illuminate\Validation\Rule;

class ArticleUpdateRequest extends ArticleStoreRequest
{
    public function rules() : array
    {
        return $this->makeRules()->get();
    }

    public function makeRules() : RequestRulesFill
        {
            return parent::makeRules()->replaceRule('slug', 'unique:articles', Rule::unique('articles')->ignore($this->route('article')->id));
        }
}