简体   繁体   English

是否可以在laravel请求类中添加验证规则的名称和描述

[英]Is it possible to add names and description for validation rules in laravel request class

I have request class : 我有要求上课:

class UpdateProductRequest extends ApiRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'name'        => 'required',
            'description' => 'required',
        ];
    }
}

But I want something similar to : 但我想要类似的东西:

class UpdateProductRequest extends ApiRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'name'=> [
                'name' => 'Product name',
                'description' => 'Product name description',
                'validation' => 'required',
                'type' => 'string',
            ],
            'description'=> [
                'name' => 'Product description',
                'description' => 'Product description description',
                'validation' => 'required',
                'type' => 'string',
            ]
        ];
    }
}

Because I want use this additional data for Rest API documentation. 因为我想将这些附加数据用于Rest API文档。 I don't want to duplicate names like this one: 我不想复制像这样的名字:

class UpdateProductRequest extends ApiRequest
{
    public function authorize()
    {
        return true;
    }

    public function apiData(){
        return [
            'name'=> [
                'name' => 'Product name',
                'description' => 'Product name description',
                'type' => 'string',
            ],
            'description'=> [
                'name' => 'Product description',
                'description' => 'Product description description',
                'type' => 'string',
            ]
        ];
    }

    public function rules()
    {
        return [
            'name'        => 'required',
            'description' => 'required',
        ];
    }
}

You can make rules to use your apiData like folowing: 您可以制定rules来使用您的apiData如下所示:

class UpdateProductRequest extends ApiRequest
{
    public function authorize()
    {
        return true;
    }

    public function apiData()
    {
        return [
            'name'=> [
                'name' => 'Product name',
                'description' => 'Product name description',
                'validation' => 'required',
                'type' => 'string',
            ],
            'description'=> [
                'name' => 'Product description',
                'description' => 'Product description description',
                'validation' => 'required',
                'type' => 'string',
            ]
        ];
    }

    public function rules()
    {
        return array_map(function($item){
            return $item['validation'];
        }, $this->apiData());
    }
}

But it might be a good idea to look at Swagger for documentation. 但是看看Swagger的文档可能是一个好主意。 There are few bindings for larave: https://packagist.org/search/?q=swagger%20laravel larave的绑定很少: https ://packagist.org/search/ q = swagger%20laravel

EDIT: 编辑:

rules is a kind of adapter for apiData , which holds the data. rulesapiData的一种适配器,它保存数据。 So for the never-mentioned-question you need to put your logic in apiData without changing logic in rules : 因此,对于未提及的问题,您需要将您的逻辑放在apiData而不更改rules逻辑:

public function apiData()
{
    return array_diff_key(
        (new Requests\Backend\UpdateProductRequest)->apiData(),
        ['something' => false]
    );
}

public function rules()
{
    return array_map(function($item){
        return $item['validation'];
    }, $this->apiData());
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Laravel 5在Form Request上添加规则验证时出现错误:Container.php第776行中的ReflectionException:类来宾不存在 - Laravel 5 error when add rules validation on Form Request: ReflectionException in Container.php line 776: Class guest does not exist 有没有办法在Laravel 5验证规则中为输入名称添加别名? - Is there a way to alias input names in the rules for Laravel 5 validation? 在Laravel 5中使用表单请求验证时如何添加自定义验证规则 - How add Custom Validation Rules when using Form Request Validation in Laravel 5 我可以在自定义验证类中使用laravel验证规则吗? - Can I use laravel validation rules inside the custom validation class? 扩展表单验证类并在Codeigniter中添加自定义验证规则 - Extend form validation class and add custom validation rules in codeigniter Laravel请求规则方法验证切换案例问题HTTP方法 - Laravel request rules method validation switch case issue HTTP method 如何在存储和更新中创建不同的验证规则,在表单请求 Laravel - How To create Different Validation Rules in store and updata, in Form Request Laravel Laravel验证从类请求添加输入请求时总是返回false - Laravel validation always return false when tyring to add input request from class request Laravel中的规则验证问题 - Problems with validation of rules in Laravel Laravel数组验证规则 - Laravel validation rules for array
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM