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

时间:2018-03-15 15:14:47

标签: laravel blade

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

2 个答案:

答案 0 :(得分:2)

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

例如,如果产品属于某个团队,则只能执行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(两种不同的控制器方法)获取数据

如果您还有其他问题,请与我们联系。

答案 1 :(得分:0)

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

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