[英]Laravel validation: rules in required_if
我有一个选择列表,其中第一个选项被禁用,这样,当用户未选择有效选项时,选择列表的结果将不在请求中。
在验证中,该字段是必填字段,例如,如果另一个字段的值是: 1, in case not 1, the field is not required
。
编码:
'city_id' => [
'required',
'integer',
Rule::in(City::availableCities()),
],
'district_id' => new DistrictValidation(request('city_id')),
我该怎么做,无论是否在请求中, district_id
每次都会引发验证。
感谢您的回答,
更新:如果DistrictValidation规则在此处,则您可能会清楚地看到:
class DistrictValidation implements Rule
{
protected $city;
private $messages;
/**
* Create a new rule instance.
*
* @param $cityId
*/
public function __construct($cityId)
{
$this->city = City::find($cityId);
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
dd('here');
if (!$this->city) {
return false;
}
if (!$this->city->hasDistrict) {
return true;
}
$validator = Validator::make([$attribute => $value], [
$attribute => [
'required',
'integer',
Rule::in(District::availableDistricts()),
]
]);
$this->messages = $validator->messages();
return $validator->passes();
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return optional($this->messages)->first('district_id');
}
}
尝试这个:
'city_id' => [
'nullable',
'numeric',
Rule::in(City::availableCities())
],
'district_id' => new DistrictValidation(request('city_id')),
尝试这个 :
$myValidations = [
"city_id" => [
"required",
"integer"
]
]
// if city_id exists in availableCities so add some rules
if(collect(city::availableCities)->contains(request("city_id"))){
$myValidations["district_id"] = new DistrictValidation(request('city_id'))
}
// validate request fields with $myValidations variable
尝试使用required_if
验证,其中的验证字段必须存在,并且如果anotherfield字段等于任何值,则不为空。
required_if:field,value,...
像这样使用它:
$request->validate([ 'city_id' => 'required|integer|Rule::in(City::availableCities())', 'district_id' => 'required_if:city_id,1', ]);
尝试在此处阅读更多laravel验证
您可以使用在laravel验证中定义的required_if
条件。这是正确的文档Laravel验证的链接
Validator::make($data, [
'city_id' => [
'required',
'integer',
Rule::in(City::availableCities()),
],
'district_id'=>[
'required_with:city_id,',
]
]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.