Laravel 5.4 - 根据另一个下拉选择值填充下拉列表

时间:2017-07-30 18:34:38

标签: laravel dropdown

我想从第一个下拉列表中选择一个值,根据第一个下拉值自动填充另一个下拉列表。

我的观点:

finally

我的控制器:

 <label for="category">Catégorie(s):</label>       
        {!! Form::select('category', $category,null, array('class' => 'form-
 control')) !!}
  <label for="brand">Marque:</label> 
        {!! Form::select('brand_name', $brand_name,null, array('class' => 'form-control')) !!}

如何填充另一个下拉列表?有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你可以通过一点ajax和get方法轻松完成。可能是你试图加载品牌依赖类别让我们滚动:

你的控制器:

public function index()
{

 $category = Category::pluck('categoryName', 'id');
// no need to query brand here because we will load it depend on category 
  $brand = [];


    return view ( 'site.indexS',compact('brand','category') );


}

//这里我们在控制器中添加另一个方法,它将返回品牌对象,具体取决于类别ID

 public get_brand($categpry_id){
      // hope your brand table contain category_id or any name as you wish which act as foreign key
      $brands= Brand::where('category_id',$category_id)
      ->pluck('brandName','id');
      return json_encode($brands);
    }

现在我们需要添加此内容以点击此网址:

Route::get('get-brand','YourControllerName@get_brand');

在视图中:      {{ - 我正在为两个下拉列表添加ID - }}     Catégorie(S):
            {! Form :: select('category',$ category,null,array('id'=&gt;'category_dropdown','class'=&gt;'form-      控制'))!!}

  <label for="brand">Marque:</label> 
        {!! Form::select('brand_name', $brand_name,null, array('id' => 'brand_dropdown','class' => 'form-control')) !!}

现在在我们的视图文件中我们需要使用ajax,还有很多其他方式我更喜欢这里的ajax

<script type="text/javascript">
  var url = "{{url('/')}}";
</script>
 <script type="text/javascript">

      $('#category_dropdown').on('change', function() {
        $('#brand_dropdown').empty();
var id = $('#category_dropdown').val();
        $('#brand_dropdown').html('<option selected="selected" value="">Loading...</option>');
    var url = url + '/get-brand/'+id;
    $.ajax({
        url: url,
        type: "GET",
        dataType: "json",
        success:function(data) {
            //console.log(data);
            $('#brand_dropdown').html('<option selected="selected" value="">Select Brand</option>');
            $.each(data, function(key, value) {

                $('#brand_dropdown').append('<option value="'+key+'">'+value+'</option>');
            });

        }
    });
      });
    </script>