【发布时间】:2018-01-15 10:26:07
【问题描述】:
我有以下规则。
$rules['min_salary'] = 'required|not_in:0|numeric';
$rules['max_salary'] = 'required|not_in:0|numeric';
如何有 min_salary 小于等于 max_salary 的规则。
【问题讨论】:
我有以下规则。
$rules['min_salary'] = 'required|not_in:0|numeric';
$rules['max_salary'] = 'required|not_in:0|numeric';
如何有 min_salary 小于等于 max_salary 的规则。
【问题讨论】:
创建新规则
php artisan make:rule SalaryRule
将规则添加到您的验证中
$rules['min_salary'] = ['required', 'not_in:0', 'numeric', new SalaryRule($request->max_salary)];
$rules['max_salary'] = 'required|not_in:0|numeric';
如果您使用的是FormRequest,您可以以$this->max_salary 的身份访问max_salary
确保在代码中导入规则
use App\Rules\SalaryRule;
在规则的passes 方法中,您可以编写逻辑
public function passes($attribute, $value)
{
return $value <= $this->max_salary;
}
并创建一个属性max_salary 并在规则的构造方法中初始化它,因为您在构造函数中传递max_salary。
protected $max_salary;
public function __construct($max_salary)
{
$this->max_salary = $max_salary;
}
【讨论】: