Как я могу показывать мультипространственный array в двух form select, и что ответ второго form select зависел от первого в Laravel?

У меня есть мультипространственная договоренность, которую я хочу показать в двух form select один из form select, это "государство" и другой - "Муниципалитет". Вопрос состоит в том, чтобы показывать в виде blade контент обоих, и который конечно, когда будет выбрано государство во втором form select, загружают соответствующие Муниципалитеты.

$estados = collect([
        [
            'estado' => 'estado1',
            'municipio' => ['municipio1', 'municipio2', 'municipio3']
        ],
        [
            'estado' => 'estado2',
            'municipio' => ['municipio4', 'municipio5', 'municipio6']
        ],
        [
            'estado' => 'estado3',
            'municipio' => ['municipio7', 'municipio8', 'municipio9']
        ]
    ]);

Приблизительная идея была бы такой. И потом в виде Blade у него были бы два form select.

          <div class="form-group">
          <label>Estado</label>
          <select class="form-control select2" style="width: 100%;">
          @foreach($estados as $estado)
           <option>{{$estado['estado']}}</option>
           @endforeach
          </select>
           </div>

Таким образом, если он показывает мне состояния, но не, как добивание, чтобы он показал мне муниципалитеты, которые соответствуют каждому отборному состоянию.

0
задан 08.11.2019, 19:00
1 ответ

Если ты хочешь изменить HTML тебя pГЎgina, ты нуждаешься в том, чтобы использовать javascript, иначе Гєnica opciГіn, который tendrГ-схвати с PHP, перезагружая ее pГЎgina снова как только было выбрано "состояние".

Правильная форма и mГЎs обычная serГ - в посредством javascript и ajax. Я оставляю тебя aquГ - cГіdigo полностью функционально твоего вопроса.

В первом select мы добавляем одну funciГіn javascript к событию onchange названным obtenerMunicipios, к которой призывают ему и перемещают отборную стоимость каждый раз, когда он изменен. Мы добавляем один id="municipio" к второму select, который serГЎ измененный завися стоимость отборного "состояния".

<select class="form-control select2" style="width: 100%;" onchange="obtenerMunicipios(this.value)">
   @foreach($estados as $estado)
      <option>{{$estado['estado']}}</option>
   @endforeach
</select>
<select id="municipios" class="form-control select2" style="width: 100%;"></select>

funciГіn javascript objtenerMunicipios реализует призыв AJAX к серверу с состоянием, выбранным, чтобы получать Ваши муниципалитеты. Seguidamente pintarГЎ в HTML одна option в select "муниципалитетах" из-за каждого полученного муниципалитета.

<script type="text/javascript">
    function obtenerMunicipios(estado){
        $.ajax({
            type:'GET',
            url:'/ajaxObtenerMunicipio/'+estado,
            success:function(data){
                var selectMunicipios = $('#municipios');
                selectMunicipios.empty();
                for (var i=0; i<data.length; i++) {
                    selectMunicipios.append('<option>' + data[i] + '</option>');
                }
            }
        });
    }
</script>

Мы Осуществляем ее funciГіn ajax в PHP с которого получать муниципалитеты. В laravel например, podrГ, - чтобы объявлять ее funciГіn следующей формы:

Route::get('/ajaxObtenerMunicipio/{estado}', function ($estado) {

    $estados = collect([
        [
            'estado' => 'estado1',
            'municipio' => ['municipio1', 'municipio2', 'municipio3']
        ],
        [
            'estado' => 'estado2',
            'municipio' => ['municipio4', 'municipio5', 'municipio6']
        ],
        [
            'estado' => 'estado3',
            'municipio' => ['municipio7', 'municipio8', 'municipio9']
        ]
    ]);

    $municipios = $estados->where('estado', $estado)->pluck('municipio')->flatten();

    return response()->json($municipios);
});

Надеялся смочься помогать тебе с этим ответом :)

1
ответ дан 01.12.2019, 12:15

Теги

Похожие вопросы