[英]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. rules
是apiData
的一种适配器,它保存数据。 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.