【问题标题】:show data of nested foreach loop in two different Select Tag in laravel在 laravel 的两个不同的 Select Tag 中显示嵌套 foreach 循环的数据
【发布时间】:2019-06-27 10:54:12
【问题描述】:

我有两个模型(类别,品牌)与 laravel 中的一对多关系(hasMany)相关,例如category hasMany brands。现在我想在一个选择标签中显示品牌数据,在另一个选择标签中显示类别模型数据。

  • 这是我的控制器代码
     $category=Category::with('brands')->get();
      return view('product.add')->with('category',$category);
  • 这是我的视图刀片。
     <div class="form-group">
       <select name="category_id" class="input">
         <option value="">Select Main    Category</option>
           @foreach($category as $category)
         <option value="{{$category->id}}">{{$category->name}}</option>
           @endforeach
       </select>
     </div>
     <div class="form-group">
       <select name="brand_id" class="input">
           @foreach($brands->brands as $brand)
              <option value="{{$brand->id}}">{{$brand->name}}</option>
           @endforeach
       </select>
     </div>

它不工作

【问题讨论】:

  • 预期输出和当前输出是什么
  • “它不工作”。每次都杀了我。
  • 你能把这3个词扩展成“它不工作”
  • 这不会让您在更改类别下拉列表时发出 ajax 请求并将数据附加到品牌下拉列表中。
  • 它说的是未定义的变量品牌

标签: laravel laravel-blade


【解决方案1】:

你可以做一些简单的事情:

    <div class="form-group">
       <select name="category_id" class="input">
         <option value="">Select Main    Category</option>
           @foreach($category as $cat)
         <option value="{{$cat>id}}">{{$cat->name}}</option>
           @endforeach
       </select>
     </div>
     <div class="form-group">
       <select name="brand_id" class="input">
           @foreach($category as $cat)
           @foreach($cat->brands as $brand)
              <option value="{{$brand->id}}" category="{{$cat->id}}">{{$brand->name}}</option>
           @endforeach
           @endforeach
       </select>
     </div>

并且您只需要使用 javascript(jquery) 显示所选选项的品牌

    $('[name="category_id"]').on('change',function() {
       if($(this).val() != '') {
          $('[name="brand_id"] option').hide();
          $('[name="brand_id"] option[category="'+$(this).val()+'"]').show();
       } else {
           $('[name="brand_id"] option').show();
       }

    });

【讨论】:

  • $category as $category 你正在覆盖同一个变量,请参阅更新的答案
  • 仅与该类别相关的品牌
  • 我不明白您在说什么,如果您没有看到品牌,那是因为您没有与该类别相关的品牌
  • 表示js不工作了,你有没有控制台错误?
  • 谢谢@madalinivascu,你是男人。代码工作一切正常。非常感谢。
猜你喜欢
  • 2019-09-24
  • 2020-03-17
  • 2017-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多