如何在 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",
]);
//...
我想让角色只对管理员可用,可以 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",
]);
//...