gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 23:28:02 24 4
gpt4 key购买 nike

我有请求类:

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

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

但我想要类似的东西:

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',
]
];
}
}

因为我想将此附加数据用于 Rest API 文档。我不想重复这样的名字:

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',
];
}
}

最佳答案

您可以制定规则来使用您的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());
}
}

但看看 Swagger 可能是个好主意用于文档。 larave 的绑定(bind)很少:https://packagist.org/search/?q=swagger%20laravel

编辑:

rules 是一种用于保存数据的apiData 的适配器。因此,对于从未提及的问题,您需要将逻辑放在 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());
}

关于php - 是否可以在 laravel 请求类中添加验证规则的名称和描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41739107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com