2016-08-02 3 views
0

У меня выпадающее меню в шаблоне Laravel.Как загрузить данные в выпадающем меню в Laravel?

Это список выбора с названиями стран.

Мне нужно загрузить города в ближайшем выпадающем меню после щелчка по стране.

Итак, я думаю, что это должен быть запрос Ajax контроллеру Laravel, чтобы получить города по стране id.

Возможно, есть решение?

ответ

2

Вы могли бы сделать что-то вроде этого в JQuery

<select class="country"> 
    <option>Select</option> 
    <option value="usa">United States</option> 
    <option value="india">India</option> 
    <option value="uk">United Kingdom</option> 
</select> 
<input type="hidden" name="_token" value="{{ csrf_token() }}"> 

<div id="response"></div> 

JavaScript, не забудьте положить его в $(document).ready()

$("select.country").change(function(){ 
    var selectedCountry = $(".country option:selected").val(); 

    $.ajaxSetup({ 
     headers: { 
      'X-CSRF-TOKEN': '{{csrf_token()}}' 
     } 
    }); 

    $.ajax({ 
     method: "POST", 
     url: "countriesList", 
     data: { country : selectedCountry } 
     }).done(function(data){ 
      $("#response").html(data); 
     }); 
}); 

И тогда в вашем контроллере Laravel или непосредственно с маршрута, вы можете вернуть страны и города в виде многомерных массивов

Route::post('countriesList', function() { 
    if(Request::ajax()) { 
     $country = Input::get('country'); 

     $countryArr = [ 
      "usa" => ["New York", "Los Angeles", "California"], 
      "india" => ["Mumbai", "New Delhi", "Bangalore"], 
      "uk" => ["London", "Manchester", "Liverpool"] 
     ]; 

     if($country !== 'Select'){ 
      echo "<label>City:</label>"; 
      echo "<select>"; 
      foreach($countryArr[$country] as $value){ 
       echo "<option>". $value . "</option>"; 
      } 
      echo "</select>"; 
     } 
    } 
});