Способ сделать это с помощью 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>
Это основная идея, хорошо?