2

有许多线程处理子视图,有许多不同的答案。而且我并没有真正找到匹配的答案,尽管我猜我的模式很常见:

页面显示查询的结果。结果区域可以通过用户交互使用 Ajax 进行更新。因此,我有两个控制器:

  1. pageDisplay,它呈现整体视图(没有结果)
  2. resultsDisplay,它使用子视图生成并呈现结果

我的问题涉及使用默认设置的结果的初始显示。我怎样才能resultsDisplay从 中调用控制器pageDisplay

有几个选项我不能(或不想)使用:

  • 初始 Ajax 请求,因为考虑到 SEO,此解决方案效率不高
  • 包括用@include作主视图的子视图不知道要发送到子视图的适当变量。这些变量由resultsDisplay控制器生成
  • 将控制器的代码复制resultsDisplaypageDisplay控制器中。这是如此丑陋和难以维护......

也许我可以从主控制器调用子控制器。但我不知道该怎么做,因为子控制器返回一个视图......

感谢您的热心帮助!

4

1 回答 1

1

我认为您所追求的是nest()嵌套子视图。这是一个例子:

// Show view and nest sub view passing $foo and $bar to sub view
$foo = 'Some foo data';
$bar = 'Some bar data';
View::make('pageDisplay')->nest('child', 'resultsDisplay', compact('foo', 'bar));

然后在您的pageDisplay视图中,您只需回显嵌套视图:

<div id="myChildView">
    {{ $child }}
</div>

在您的子视图中,您可以使用您通过的$fooand$bar变量。

在此处查看官方文档(在Passing A Sub-View To A View下):http: //laravel.com/docs/responses#views

于 2014-08-12T15:31:05.343 回答