Laravel 数组中的验证值 - livewire
Laravel validation value in array - livewire
我有一组状态在 front-end 中循环。我想在后端验证该值在数组内。我不断收到所选状态无效的错误消息。
Blade 查看
<select wire:model.defer="state" name="state">
@foreach($states as $state)
<option value="{{ $state }}">{{ strtoupper($state) }}</option>
@endforeach
</select>
控制器(Livewire)
public $states = [
'sa', 'vic', 'nsw', 'qld', 'act', 'nt', 'wa', 'tas'
];
protected function rules()
{
$array = [
'state' => 'required|in:$this->states',
];
return $array;
}
试试这个
protected function rules()
{
$array = [
'state' => 'required|in:'.implode(',',$this->states),
];
return $array;
}
或
protected function rules()
{
$array = [
'state' => ['required',Rule::in($this->states)],
];
return $array;
}
或者,如果您只是在寻找状态的基本验证 method/function,那么它实际上只是一个字符串验证助手,与框架无关。这里我们使用U.S。州代码。原理是一样的。
/**
* Validate State code strings
*
* @return boolean
*/
public function getValidStates($str) {
$states = array(
"AL","AK","AZ","AR","CA","CO","CT","DE","DC","FL","GA","HI",
"ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN",
"MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH",
"OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA",
"WV","WI","WY","AS","GU","MP","PR","VI","FM","MH","PW"
);
if (in_array(strtoupper($str), $states)) {
return true;
}
return false;
}
我有一组状态在 front-end 中循环。我想在后端验证该值在数组内。我不断收到所选状态无效的错误消息。
Blade 查看
<select wire:model.defer="state" name="state">
@foreach($states as $state)
<option value="{{ $state }}">{{ strtoupper($state) }}</option>
@endforeach
</select>
控制器(Livewire)
public $states = [
'sa', 'vic', 'nsw', 'qld', 'act', 'nt', 'wa', 'tas'
];
protected function rules()
{
$array = [
'state' => 'required|in:$this->states',
];
return $array;
}
试试这个
protected function rules()
{
$array = [
'state' => 'required|in:'.implode(',',$this->states),
];
return $array;
}
或
protected function rules()
{
$array = [
'state' => ['required',Rule::in($this->states)],
];
return $array;
}
或者,如果您只是在寻找状态的基本验证 method/function,那么它实际上只是一个字符串验证助手,与框架无关。这里我们使用U.S。州代码。原理是一样的。
/**
* Validate State code strings
*
* @return boolean
*/
public function getValidStates($str) {
$states = array(
"AL","AK","AZ","AR","CA","CO","CT","DE","DC","FL","GA","HI",
"ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN",
"MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH",
"OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA",
"WV","WI","WY","AS","GU","MP","PR","VI","FM","MH","PW"
);
if (in_array(strtoupper($str), $states)) {
return true;
}
return false;
}