首页 > 解决方案 > 在 laravel 5.6 中将多个变量传递给一个视图

问题描述

大家好,我想将多个变量传递给一个视图,这是我的CategoryController.php

    public function site()
{
    $categories = Category::all();
    return view('template.sitemap', ['categories' => $categories]);
}

这是SubCategoryController.php

public function index2(){
    $subcategories =  SubCategory::all();
    return view('template.sitemap',['subcategories'=>$subcategories]);
}

这是我执行此操作的路线web.php

Route::get('sitemap.html','CategoryController@site')->name('sitemap')
Route::get('sitemap.html','SubCategoryController@index2')->name('sitemap');

这就是我试图做这个sitemap.blade.php的观点

   @foreach($categories as $category)
      <li><a href="category.html">{{$category->name}}</a></li>
      <ul>
       @foreach($subcategories as $subcategory)
         <li><a href="category.html">{{$subcategory->category_name->name}</li>
       @endforeach
      </ul>
  @endforeach

但是我经常单独看到 undefined vairalble 他们工作得很好但是当我想要用户两个变量都看到 undefined vairable 时。

标签: phplaravellaravel-routinglaravel-blade

解决方案


你可以写

public function site()
{
    $categories = Category::all();
    $subcategories =  SubCategory::all();
    return view('template.sitemap', compact('categories', 'subcategories');
}

或者你可以急切地加载这个

public function site()
{
    $categories = Category::with('subcategories')->get();
    return view('template.sitemap', compact('categories');
}

在视野中

@foreach($categories as $category)
  <li><a href="category.html">{{$category->name}}</a></li>
<ul>
    @foreach($category->subcategories as $subcategory)
         <li><a href="category.html">{{$subcategory->name}}</li>
    @endforeach   
   </ul>
@endforeach

推荐阅读