如何在Laravel中合并两个Request [英] How to merge two Request in Laravel
本文介绍了如何在Laravel中合并两个Request的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在我的Laravel(5.1)项目中,我需要创建一个验证表单的请求。
In my Laravel (5.1) project I need to create a Request for validating a form.
但是对于这个请求,我想合并两个不同的请求:
But for this request, i would like to merge two different requests :
第一个请求:
class AdvertisementRequest extends Request {
public function authorize()
{
return true;
}
public function rules()
{
return [
'ads_type' => 'required|numeric|in:0,1',
'category' => 'required|numeric|exists:categories,id',
'title' => 'required|alpha_num|max:45',
'description' => 'required|alpha_num|max:2000',
'price' => 'required|numeric',
];
}
}
第二个请求:
class UserRegisterRequest extends Request {
public function authorize()
{
return true;
}
public function rules()
{
$rules = [
'form_type' => 'required|numeric|in:0,1',
'user_type' => 'required|numeric|in:0,1',
'phone' => 'required|phone_number',
'region' => 'required|numeric|exists:regions,id',
'department' => 'required|numeric|exists:departments,code',
'postal_code' => 'required|postal_code',
'city' => 'alpha|max:45',
'id_city' => 'required|numeric|exists:cities,id',
'last_name' => 'required|alpha_sp|max:45',
'first_name' => 'required|alpha_sp|max:45',
'pseudo' => 'required|alpha|max:45|unique:users',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|alpha_num|min:6|max:45',
];
return $rules;
}
}
我想创建第三个组合请求另外两个是这样的:
And i would like to create a third request which combining the two other like that :
class UserAdvertisementRegisterRequest extends Request {
public function authorize()
{
return true;
}
public function rules()
{
$rules = [
'ads_type' => 'required|numeric|in:0,1',
'category' => 'required|numeric|exists:categories,id',
'title' => 'required|alpha_num|max:45',
'description' => 'required|alpha_num|max:2000',
'price' => 'required|numeric',
'form_type' => 'required|numeric|in:0,1',
'user_type' => 'required|numeric|in:0,1',
'phone' => 'required|phone_number',
'region' => 'required|numeric|exists:regions,id',
'department' => 'required|numeric|exists:departments,code',
'postal_code' => 'required|postal_code',
'city' => 'alpha|max:45',
'id_city' => 'required|numeric|exists:cities,id',
'last_name' => 'required|alpha_sp|max:45',
'first_name' => 'required|alpha_sp|max:45',
'pseudo' => 'required|alpha|max:45|unique:users',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|alpha_num|min:6|max:45',
];
return $rules;
}
}
是否有任何解决方案可以做到这一点而不重复我的代码?
Is there any solution for do that without duplicate my code ?
对不起,我的英文不好:/。
Sorry for my bad english :/.
提前感谢您的回复!
推荐答案
最简单的方法是在 UserAdvertisementRegisterRequest :: rules 方法中生成验证规则的合并列表。以下方式:
The simplest way would be to generate the merged list of validation rules in your UserAdvertisementRegisterRequest::rules method in the following manner:
class UserAdvertisementRegisterRequest extends Request {
public function rules()
{
return array_merge(
with(new AdvertisementRequest)->rules(),
with(new UserRegisterRequest)->rules()
);
}
}
这篇关于如何在Laravel中合并两个Request的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文