微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

下拉条件验证-仅在上一个下拉字段中选择了特定字段选项时,才不需要下拉字段

如何解决下拉条件验证-仅在上一个下拉字段中选择了特定字段选项时,才不需要下拉字段

在创建用户表单中,我有两个下拉字段,一个角色下拉列表和一个团队下拉列表。当前,角色字段是必需的,但团队字段不是必需的。新用户可以是超级用户,因此不能成为团队成员,因此这就是为什么不要求“团队”字段的原因,但这是由于用户偶尔忘记添加团队而引起的一些问题,因此我们现在需要团队领域也是必需的。因此,我需要进行一些条件验证,如果“角色”字段的所选下拉选项为“超级用户”,则“团队”字段的下拉列表不是必需的,但是如果“角色”字段为任何其他选项,则“团队”字段的下拉列表为必需的。因此,我需要“超级用户”角色以外的所有选定角色的“团队”下拉列表字段。

我以为可以使用Laravel的required_unless,但是我尝试使用该选项的所有尝试均失败了,但是我很可能会搞砸了。解决此需求的最佳选择是什么。一个人将如何实现这一功能?我需要“团队”字段时,只要“角色”下拉列表中的选项不是“超级用户”,就应该是必填字段,但是一旦选择了“超级用户”,则不需要“团队”下拉字段。

我的代码

StoreUsersRequest

 public function rules()
    {
        return [
            'name' => 'required','email' => 'required|email|unique:users,email','last_login_at' => 'nullable|date_format:'.config('app.date_format'),'role' => 'required','role.*' => 'exists:roles,id',];
    }

创建表单

        <div class="col-sm-4 form-group">
            @if(auth()->user()->role->contains(1))
            {!! Form::label('role',trans('global.users.fields.role').'*',['class' => 'control-label']) !!}
            {!! Form::select('role[]',$roles,old('role'),['class' => 'form-control','id' => 'selectall-role','required' => '']) !!}
                <p class="help-block gray">@lang('global.app_see_description_of_user_roles_below').</p>
            @if($errors->has('role'))
                <p class="help-block">
                    {{ $errors->first('role') }}
                </p>
            @endif
        </div>

        <div class="col-sm-4 form-group">
            {!! Form::label('team_id',trans('global.users.fields.team').'',['class' => 'control-label']) !!}
            {!! Form::select('team_id',$teams,old('team_id'),['class' => 'form-control select2 autosetup',]) !!}
            <p class="help-block"></p>
            @if($errors->has('team_id'))
                <p class="help-block">
                    {{ $errors->first('team_id') }}
                </p>
            @endif
        </div>

控制器

    public function create()
    {
        $roletype = Role::where('id','>',1)->orderBy('display_order')->get();
        $roles = \App\Role::orderBy('display_order')->get()->pluck('title','id');
        $teams = \App\Team::select(DB::raw('concat (name," - ",city) as name,id'))->orderBy('name')->pluck('name','id')->prepend(trans('global.app_please_select'),'');

        $create_user = true;

        return view('admin.users.create',compact('roles','teams','roletype','create_user'));
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。