如何在laravel中将select下拉依赖于不同的数据库表?

时间:2018-01-16 05:01:59

标签: php jquery mysql laravel

我正在制作项目,使管理网站保持教会成员或团体的记录。

我仍在学习php并学习使用laravel框架。

我有 数据库表:

  1. RankPosition - >包含FamilyMember职位的领导者,AreaMember职位的领导者
  2. FamilyMember - >包含FamilyMember名称组
  3. AreaMember - >包含AreaMember名称组
  4. 现在,我需要在注册页面中创建选择下拉列表, 怎么做 当人们选择家庭领袖时 第二个选择下拉弹出窗口,里面的列表取自FamilyMember Table

    当其他人选择AreaMember的领导者时 第二个选择下拉弹出窗口,里面的列表取自AreaMember Table

    在此之前,我搜索了关键字“依赖下拉列表”和“国家/地区下拉列表”

    但是他们中的许多人只是使用2个表来解释,例如类别和子类别表

    我只是不确定如何正常编码标准/正确的方法来解决这个问题?

    我非常感谢每一个帮助,并且非常感激。

    这是我最近尝试做的代码

    对于创建页面

    {{ csrf_field() }}
    
    <div class="field">
        {!! Form::label('name', 'Nama Lengkap', ['class'=>'label']) !!}
        <div class="control">
            {!! Form::text('name', null, ['id'=>'name', 'class'=>"input {{ $errors->has('name') ? 'is-danger' : '' }}"]) !!}
        </div>
    
        @if($errors->has('name'))
            <p class="help is-danger">{{ $errors->first('name') }}</p>
        @endif
    </div>
    
    <div class="field" id="rank_group">
        {!! Form::label('rank_id', 'Jabatan', ['class'=>'label']) !!}
        <div class="control">
            <div class="select">
    
                {!! Form::select('rank_id', $rankData , null, array('id'=>'rank_select', 'placeholder'=>'Pilih Jabatan')) !!}
    
            </div>
        </div>
        @if($errors->has('family_id'))
            <p class="help is-danger">{{ $errors->has('family_id') }}</p>
        @endif
    </div>
    
    
    <div class="field" id="family_group">
        {!! Form::label('family_id', 'Family', ['class'=>'label']) !!}
        <div class="control">
            <div class="select">
    
                {!! Form::select('family_id', $familyData , null, array('id'=>'family_select', 'placeholder'=>'Pilih FA')) !!}
    
            </div>
        </div>
        @if($errors->has('family_id'))
            <p class="help is-danger">{{ $errors->has('family_id') }}</p>
        @endif
    </div>
    
    <div class="field" id="district_group">
        {!! Form::label('district_id', 'Rayon', ['class'=>'label']) !!}
        <div class="control">
            <div class="select">
    
                {!! Form::select('district_id', $districtData , null, array('id'=>'district_select', 'placeholder'=>'Pilih Rayon')) !!}
    
            </div>
        </div>
        @if($errors->has('family_id'))
            <p class="help is-danger">{{ $errors->has('family_id') }}</p>
        @endif
    </div>
    
    <div class="field" id="area_group">
        {!! Form::label('area_id', 'Wilayah', ['class'=>'label']) !!}
        <div class="control">
            <div class="select">
    
                {!! Form::select('area_id', $areaData , null, array('id'=>'area_select', 'placeholder'=>'Pilih Wilayah')) !!}
    
            </div>
        </div>
        @if($errors->has('family_id'))
            <p class="help is-danger">{{ $errors->has('family_id') }}</p>
        @endif
    </div>
    
    
    {!! Form::submit($buttonLabel, ['class'=>'button is-success is-outlined is-fullwidth m-t-50']) !!}
    
    在LeaderController中

    这是创建功能

    public function create()
    {
        $rankData = Rank::pluck('position', 'id');
        $familyData = Family::pluck('name', 'id');
        $districtData = District::pluck('name', 'id');
        $areaData = Area::pluck('name', 'id');
    
    
        return view('leader.create', compact('familyData','districtData','areaData','rankData'));
    }
    

    在Script标签中,我只使用hide和show jquery,因为我还没有很好地理解如何使用AJAX从3或4个不同的表获取数据取决于之前的选择 所以我提出了这个代码

    $("#family_group").hide();
    $("#district_group").hide();
    $("#area_group").hide();
    
    
    $("#rank_select").on('change', function(data){
        var id = data.target.value;
    
        switch(id){
            case '1':
                $("#family_group").show();
                $("#district_group").hide();
                $("#area_group").hide();    
                break;
            case '2':
                $("#family_group").hide();
                $("#district_group").show();
                $("#area_group").hide();
                break;
            case '3':
                $("#family_group").hide();
                $("#district_group").hide();
                $("#area_group").show();
        }
    

0 个答案:

没有答案