如何在 Laravel 中将验证设置为可选

How to set validation as optional in Laravel

我想让角色只对管理员可用,可以 select 角色对用户可用,而用户想要编辑个人资料信息时只能看到他的角色,但不能编辑他的角色如何制作为用户锁定的角色字段 以下代码:

<div class="form-group"> 
{{ Form::label('role', 'Roles', array('class' => 'control-label mb-1')) }} <br/> 
{{ Form::select('roles[]',$roles,$selectedRoles,['class'=>'myselect','data-placeholder'=>'Select role(s)', 'multiple'] ) }} 
</div>

您可以使用以下内容

use Illuminate\Validation\Rule;
//..

if(!$request->filled('roles')) {
   $request->merge(['roles' => []]);
}

$this->validate($request,[
    'name' => 'required',
    'email' => 'required|email', //'required|email|unique:users,email',
    'password' => [ 'string', 'min:8'],
    'roles' => 'nullable|array', 
    'roles.*' => [Rule::requiredIf($request->filled('roles')), 'exists:roles,id'],  
],[
    'name.required' => "Name field is required",
    'email.required' => "Email Field is Required",

    'email.email' => "Invalid Email Format ",

    'password.min' => "The Password Must be at Least 8 Characters or More",
    'roles.*' => "The Role is Required",
]);

//...