EG
{
$menu = [
'type' => 'page_link',
'post' => 'page_link',
'category' => 'category_link',
'link' => 'external_link',
];
return [
$menu,
[
'type' => 'required|string',
'post_id' => 'required_if:type,post',
'category_id' => 'required_if:type,category',
'external_link' => 'required_if:type,link',
],
'name' => 'required',
'type' => 'required',
'home' => 'in:1,0',
];
}
И пустое поле пропускает если ничего не заполнить
public function rules()
{
return [
'type' => 'required|string',
'post_id' => 'required_if:type,post',
'category_id' => 'required_if:type,category',
'external_link' => 'required_if:type,link',
'name' => 'required',
'home' => 'in:1,0',
];
}