Динамически заполненные выбранные меню в Laravel5 - PullRequest
0 голосов
/ 25 апреля 2018

В представлении у меня есть несколько меню выбора, которые заполняются данными из двух отдельных таблиц.

Ищите способ заполнить второе меню выбора в зависимости от значения первого.

<div class="form-group">
    {{Form::label('company', 'Company')}}
    <select selected="" class="form-control" id="company" name="company">
        @foreach($company as $key)
            <option value="">{{$key->name}}</option>
        @endforeach
    </select>
</div>
<div class="form-group">
    {{Form::label('department', 'Department')}}
    <select selected="" class="form-control" id="department" name="department">
        @foreach($department as $key)
            <option =value"">{{$key->name}}</option>
        @endforeach
    </select>
</div>

Это похоже на то, что не должно быть слишком сложным, но еще не нашел какой-либо хорошей информации об этом.

1 Ответ

0 голосов
/ 26 апреля 2018

Способ сделать это с помощью JavaScript.Основная идея состоит в том, чтобы иметь частичное представление со вторым выбором, а затем вызывать его, когда пользователь изменяет что-то в первом выборе.Для этого вам нужно иметь два представления.В главном представлении будет вызов второго представления с набором отделов по умолчанию:

<div class="form-group">
    {{Form::label('company', 'Company')}}
    <select selected="" class="form-control" id="company" name="company">
        @foreach($company as $key)
            <option value="">{{$key->name}}</option>
        @endforeach
    </select>
</div>
<div id="second-select" class="form-group">
    @include('contents.partial', ['department' => $department])
</div>

Во втором представлении (contents.partial) будет напечатана форма:

{{Form::label('department', 'Department')}}
<select selected="" class="form-control" id="department" name="department">
    @foreach($department as $key)
        <option =value"">{{$key->name}}</option>
    @endforeach
</select>

Затемвам потребуется маршрут для вызова функции для визуализации второго представления на основе некоторого значения:

Route::get('/get/content/{value}', 'ContentController@getContent');

и функции для визуализации представления в ContentController:

public function getContent(Request $request, $value)
{
    $department = Department::where('value', $value)->get();

    return view('contents.partial', [
        'department' => $department
    ])->render();
}

И длявызовите это, вам нужен javascript / jquery для определения изменения в select и запуска функции в контроллере

<script>
    $(document).ready(function(){
        setListener();    
    });

    function setListener() {
        $('#company').change(function() {
            var value = $(this).val();
            $.get( "/get/content/"+value, function( data ) {
                $('#second-select').empty();
                $('#second-select').append(data);
            });
        });
    }
</script>

Это основная идея, хорошо?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...