【问题标题】:passing multiple variable to one view in laravel 5.6在 laravel 5.6 中将多个变量传递给一个视图
【发布时间】:2019-01-21 00:37:43
【问题描述】:

大家好,我想将多个变量传递给一个视图 这是我的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 varalble 单独他们工作得很好 但是当我希望用户两个变量都看到未定义的变量时。

【问题讨论】:

  • 必须先检查变量是否存在,然后再将其回显为@if(isset($categories)) @endif

标签: php laravel laravel-routing laravel-blade


【解决方案1】:

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

路线

 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

【讨论】:

    【解决方案2】:

    你可以写

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-21
      • 2015-07-30
      • 2019-07-06
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多