在 laravel 5.6 中将多个变量传递给一个视图

passing multiple variable to one view in 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

但我经常看到 undefind vairalble 他们一个人工作很好 但是当我想要用户两个变量时,看到未定义的变量。

你可以写

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

您的网站将转到第一条路线,永远不会转到您的第二个控制器。 你应该写。

路线

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

控制器

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

查看

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