我正在尝试验证有关'parent_code'
字段值的'level'
attr
这是我想要实现的目标:
['parent_code'
是仅必需,当'level'
为!= 0(此部分工作正常)]
并且在设置时,它还必须存在于表'products'
中('product_code'
:将使用的列名)
我当前的代码(无法正常工作)
产品资源类别
public function fields(Request $request) {
return [
ID::make()->sortable(),
Text::make('Product code', 'product_code')
->rules('required')
->creationRules('unique:products,product_code')
->updateRules('unique:products,product_code,{{resourceId}}')->hideFromIndex(),
Text::make('Product short name', 'product_short_name')->onlyOnForms(),
Textarea::make('Product name', 'product_name')
->rules('required')
->sortable()
->onlyOnForms(),
Text::make('Parent code', 'parent_code')
->rules(['required_if:level,2,4,6', 'exists:products,product_code'])
->hideFromIndex(),
Select::make('Level', 'level')->options([
'0' => 'Sector level',
'2' => 'H2',
'4' => 'H4',
'6' => 'H6',
])->rules('required')->sortable(),
];
}
创建产品表格
谢谢您的帮助。
尝试使用规则数组本身中的if条件。在下面显示演示代码。使代码符合您的要求。
public function fields(Request $request) {
$validationArr = [
ID::make()->sortable(),
Text::make('Product code', 'product_code')
->rules('required')
->creationRules('unique:products,product_code')
->updateRules('unique:products,product_code,{{resourceId}}')->hideFromIndex(),
Text::make('Product short name', 'product_short_name')->onlyOnForms(),
Textarea::make('Product name', 'product_name')
->rules('required')
->sortable()
->onlyOnForms(),
if($this->input('level') == 2 || $this->input('level') == 4 || $this->input('level') == 6) {
Text::make('Parent code', 'parent_code')
->rules(['exists:products,product_code'])
->hideFromIndex();
}
Select::make('Level', 'level')->options([
'0' => 'Sector level',
'2' => 'H2',
'4' => 'H4',
'6' => 'H6',
])->rules('required')->sortable(),
];
return $validationArr;
}