Я делаю проект Laravel 5.4, в котором пользователь должен выбрать школу и свой класс, прежде чем он сможет зарегистрироваться. Я хочу, чтобы они сначала выбрали свою школу в элементе, где варианты заполнены школами курса. Но как мне получить параметры следующего элемента, заполненные соответствующими классами для школы, после выбора школы в первом элементе?

-1
Kris D. J. 5 Май 2017 в 04:09

3 ответа

Лучший ответ

Я не проверял этот код, но надеюсь, что он поможет

< Сильный > Вид

<select name="school">
      @foreach($allSchools as $school)
         <option value="{{$school->id}}">{{$school->name}}</option>
      @endforeach
</select>

<select name="my_class">
      @foreach($allClasses as $class)
         <option value="{{$class->id}}">{{$class->name}}</option>
      @endforeach
</select>

<script>
  $("select[name='school']").change(function () {
    var school_id = $("select[name='school']").val();
    if (school_id !== '' && school_id !== null) {
      $("select[name='my_class']").prop('disabled',
      false).find('option[value]').remove();
      $.ajax({
        type: 'GET',
        url: {{ url('class/getClass') }}, // do not forget to register your route
        data: {id: school_id },
        }).done(function (data) {
          $.each(data, function (key, value) {
            $("select[name='my_class']")
                .append($("<option></option>")
                .attr("value", key)
                .text(value));
        });
      }).fail(function(jqXHR, textStatus){
          console.log(jqXHR);
      });
   } else {
      $("select[name='my_class']").prop('disabled', 
      true).find("option[value]").remove();
   }
});
</script>

< Сильный > ClassController

public function getClass(Request $request){
  $classes= Class::where('school_id', $request->id)->pluck('name', 'id');
  return $classes;
}
0
soulivong 17 Май 2017 в 11:57

Вы можете загрузить все школы и возможные классы для каждой школы и сохранить их в объекте javascript, затем после выбора школы вы можете обновить поле выбора класса соответствующими данными из объекта javascript.

Если эта комбинация данных слишком велика для загрузки, вы можете сделать запрос ajax при выборе школы и получить на стороне сервера классы для выбранной школы.

0
Agu Dondo 5 Май 2017 в 01:38

Отправьте запрос AJAX, который будет отправлен в случае изменения выбора школы, затем заполните классы результатом.

0
yazfield 5 Май 2017 в 01:19