【问题标题】:How can I validate multiple form with one request file in laravel?如何在 laravel 中使用一个请求文件验证多个表单?
【发布时间】:2018-03-14 04:59:27
【问题描述】:

我有三个表单,我想在一个请求文件中验证它们。如何在规则方法中检查表单身份。我很困惑。我写了这个,但它不起作用。这是我的代码

 //rules method
    public function rules()
 {

   switch ($this->check())
    {
        case 'personal':
            return ['fanme'=>'required'];
            break;

        case 'career':
            return ['career'=>'required'];
            break;  

        case 'summary':
            return ['summary_info'=>'required'];
            break; 

        default:
             return [];
            break;
   }
}


//my own method
public function check()
 {
  return $this->input('form_identity');
 }
//form field
<input type="hidden" value="personal" 
 class="form-control required" 
 name="form_identity"/>

【问题讨论】:

  • 您能出示实际表格吗?你用一个提交按钮提交它们吗?
  • 不,但我的路线是一样的,我想在控制器的开关盒中也插入值

标签: laravel laravel-5


【解决方案1】:

您可以使用在每个表单中添加唯一标识符的表单输入

public function rules()
{
    $data = request()->all();
    $serviceName = isset($data['serviceName'])?$data['serviceName']:'';

   // IF it is API CALL, you can use header
   // $serviceName = request()->header('serviceName');

    switch ($serviceName) {
        case 'userRegister':
            $rules = [ 
                'serviceName' => 'required',
                'firstname' => 'required|regex:/^[a-zA-Z ]+$/u|max:36',
                'lastname' => 'required|regex:/^[a-zA-Z ]+$/u|max:36',
                'email' => 'required|string|email|max:255|unique:users',
                'password' => 'required|string|min:6|confirmed'
            ];
            break;
        case 'codeVerify':
            $rules = ['activation_code'=>'required'];
            break;
        case 'summary':
            $rules = ['summary_info'=>'required'];
            break;
        default:
            $rules = ['serviceName' => 'required',];
    }
    return $rules;
}

【讨论】:

    【解决方案2】:

    您没有确切地提到为什么您的现有代码不起作用,但您的想法是正确的。保持简单:

    public function rules() {
        switch ($this->form_identity) {
            case 'personal':
                $rules = ['fanme'=>'required'];
                break;
            case 'career':
                $rules = ['career'=>'required'];
                break;
            case 'summary':
                $rules = ['summary_info'=>'required'];
                break;
            default:
                $rules = [];
        }
    
        return $rules;
    }
    

    您可以在表单请求 ($this) 中访问完整的 Request,因此您可以测试请求中可用的任何内容 - 例如输入值、方法(POSTPATCH 等),认证状态等。

    【讨论】:

      猜你喜欢
      • 2018-06-30
      • 1970-01-01
      • 2017-08-16
      • 2023-02-18
      • 2015-08-07
      • 2020-07-17
      • 1970-01-01
      • 2021-07-22
      • 2016-09-02
      相关资源
      最近更新 更多