[英]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.