laravel的自定义规则

clipboard.png

如上 我已经定义了规则sometimes 但是还是会对这个字段进行验证
我的需求是 用户输入数据进行验证 否则不验证

阅读 3.8k
4 个回答

这个应该是对的. 你输出 passes(), 以及 messages() 瞧瞧.

sometimes 不是空值不验证,而是不存在的时候不验证, 官网手册原话:

In some situations, you may wish to run validation checks against a field only if that field is present in the input array. To quickly accomplish this, add the sometimes rule to your rule list:

对于你的问题,你提交的表单假如 patient_yunci 是空值,但不代表它不存在。

所以你需要的是nullable规则,而不是sometimes 或者 直接让前端不要呈现为空的可选字段。

clipboard.png

这是我表单提交的数据

这是我的规则

 public function rules()
    {
        return [
            'patient_name' => "required",
            'patient_mobile' => "required|regex:/^1[34578][0-9]{9}$/",
            'patient_idcard' => array('regex:/^\d{14}(\d{1}|\d{4}|(\d{3}[xX]))$/'),
            'patient_address' => 'required',
            'patient_insurance_number' => 'sometimes',
            'patient_height' => 'nullable|max:250',
            'patient_weight' => 'nullable|max:250',
            'patient_bp_diastolic' => 'sometimes|max:500',
            'patient_bp_systolic' => 'sometimes|max:500',
            'patient_yunci' => 'sometimes|max:32767',
            'patient_chanci' => 'sometimes|max:32767',
            'patient_gestational_weeks' => 'sometimes|max:32767',
            'patient_gestational_days' => 'sometimes|max:32767',
        ];
    }

我就不知道问题在哪了 nullable与sometimes都不管用 之前定在model的时候 可以使用

patient_insurance_number没有值就不传,既然传了就会验证(包括传空值)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进