php laravel javascript表单验证,Laravel 表单验证之钩子的使用

表单验证有时候你可能需要增加基于更复杂的条件逻辑的验证规则。例如,你可以希望某个指定字段在另一个字段的值为1的时候才为必填或校验其他规则。或者当某个指定字段存在时,另外两个字段才能具有给定的值。

那么这个时候验证后钩子就起作用了

创建表单验证

namespace App\Http\Requests;

use App\Rules\IntValueBetween;

use App\Rules\Mobile;

use Illuminate\Http\Request;

use Illuminate\Validation\Rule;

class ApiWarn extends BaseFormRequest

{

public $errorCode = 2200;

protected $mobile = '';

/**

* Get the validation rules that apply to the request.

*

* @param Request $request

* @return array

*/

public function rules(Request $request)

{

return [

'status' => ['bail', 'required', 'integer', 'in:0,1'],

'mobile' => [],

];

}

/**

* 固定校验类型错误信息

*

* @return array

*/

public function messages()

{

return [

'mobile.required' => '手机号不能为空',

'status.required' => '状态不能为空',

];

}

/**

* 表单校验后的钩子使用

*

* @param $validator

*/

public function withValidator($validator)

{

$validator->sometimes('mobile', ['required'], function ($input) {

return $input->status == 1;

});

parent::withValidator($validator);

}

}

这个表单验证类主要用途:

1、校验status是必填、位数字、在【0,1】内

2、mobile规则为空:因为只有在status为1的时候才去校验手机号,而且必须要有这个规则(如果没有,那么当status为0的时候,校验结果validated里面也不会有这个参数)

3、当status校验通过够,由于手机号没有规则,所以即将返回校验结果:但是返回前会检查该表单是否存现钩子(withValidator)

4、所以如果定义了钩子那么接下来就是钩子表演时间了:我们可以在钩子里面进行mobile的选择性校验

5、神奇的sometimes:根据status状态选择是否需要校验手机号

$validator->sometimes('mobile', ['required'], function ($input) {

return $input->status == 1;

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值