如何在Laravel中合并两个Request [英] How to merge two Request in Laravel

查看:266
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆