2017-10-12 16 views
1

ネストされたツリービューカテゴリとサブカテゴリを作成しましたが、カテゴリを2回レンダリングしているようです。ツリービューメニューはLaravelで2回のレンダリングを行います

これは何が起こっているのか、ページに表示されています。ここで何が起こっている

Main category 1 
    - Sub -category 1.1 
    - Sub -category 1.2 
Main category 2 
    - Sub -category 2.1 
    - Sub -category 2.2 
Sub -category 1.1 
Sub -category 1.2 
Sub -category 2.1 
Sub -category 2.2 

は、最初は正しいツリービューをレンダリングしているが、その後の下での主要なカテゴリとしてサブカテゴリーをレンダリングするということです。

カテゴリとサブカテゴリは、1つのテーブルに保存されます。ここでは、メインカテゴリの列parent_idがあります。サブカテゴリがメインカテゴリのIDです。これは私のモデルである

public function parent() 
{ 
    return $this->belongsTo('App\Category'); 
} 

public function children() 
{ 
    return $this->hasMany('App\Category', 'parent_id'); 
} 

コントローラ

public function index() 
{ 
    $allCategories = Category::with(['children'])->get();  
    return view('categories', compact('allCategories')); 
} 

とブレード

@foreach($allCategories as $category) 
    <li class="treeview"> 
    <a href="{{ $category->id }}">{{ $category->title }}</a> 
    <ul class="treeview-menu"> 
     @foreach($category->children as $subcategory) 
     <li class=""><a href="{{$subcategory->id}}">{{$subcategory->title}}</a></li> 
     @endforeach 
    </ul> 
    </li> 
@endforeach 

答えて

1

次のように試してみてください。

モデル

public function parent() 
{ 
    return $this->belongsTo('App\Category', 'id', 'parent_id'); // I believe you can use also hasOne(). 
} 

public function children() 
{ 
    return $this->hasMany('App\Category', 'parent_id', 'id'); 
} 
public static function tree() { 

    return static::where('parent_id', '=', NULL)->get(); // or based on you question 0? 

} 

お使いのコントローラ

public function index() 
{ 
    $allCategories = Category::tree();  
    return view('categories', compact('allCategories')); 
} 

そして、あなたのブレードビュー

@foreach($allCategories as $item) 
<li class="treeview"> 
    <a href="{{ $item->id }}"><i class="fa fa-link"></i> <span>{{ $item->title }}</span> <i class="fa fa-angle-left pull-right"></i></a> 
     <ul class="treeview-menu"> 
      @foreach($item['children'] as $child) 
      <li><a href="{{ $child->id }}">{{ $child->title }}</a></li> 
      @endforeach 
     </ul> 
</li> 
@endforeach 
+0

感謝。それは素晴らしい仕事です。 – Peter

関連する問題