laravel 5.5 一个视图内有多个控制器

laravel 5.5 multiple controller inside one view

如何在一个视图中显示 TeamController@index 和 ProductController@index 都显示团队和产品列表 main.blade.php

你不能像那样显示两个控制器的结果。创建一个包含 TeamController@index 和 ProductController@index return 的视图。请注意,两者都可能扩展布局,这可能会尝试加载您的页面两次,因此请记住将视图拆分为更小的组件并仅包含那些组件。

这里有更多信息 https://laravel.com/docs/5.6/views#creating-views

您似乎想在一页上显示两个数据集。基本上,这意味着您必须执行两个控制器方法,但没有必要遵循官方文档所说的每一个方法。

例如,如果产品属于一个团队,您可以只执行 TeamController@index 并显示如下所示的产品。

@foreach($teams as $team)
  @foreach($team->products as $product)
   {{ $product->name }}
  @endforeach
@endforeach

如果没有团队和产品是两个不同的实体,没有任何关系,你可以像这样传递团队和产品:

TeamController.php

public function index()
{
  $teams = Team::all();
  $products = Product::all(); // Don't forget to include 'use App\Product'

  return view('index',compact(['teams','products']);
}

然后您可以像这样展示团队和产品:

index.blade.php

@foreach($teams as $team)
  {{ $team->name }}
@endforeach

@foreach($products as $product)
  {{ $product->name }}
@endforeach

从两个不同的模型获取信息并不意味着您必须执行两个不同的控制器功能。

不过,如果您想从两个不同的控制器获取数据,您可以设置 index.blade.php 并创建两个 ajax 请求来获取数据两个不同的 URL(两个不同的控制器方法)。

如果您还有其他问题,请告诉我。