1

我有一个使用其控制器呈现的视图。调用视图的函数链接在我的路线中。直接访问路由时它工作正常,但是当我将它包含在我的模板中时,显然我的控制器不包括在内。

包含视图时如何使用控制器?

我在 Laravel 3 上。

现在我有我的控制器:

public function get_current()
{
// $sales = ...
return View::make('sale.current')->with('sales',$sales);
}

我的路线(obv 仅适用于 GET /current):

Route::get('current', 'sale@current');

我的主视图

@include('sale.current')

然后我的 sale.current 视图调用 $sales

@foreach($sales as $sale)

谢谢!

4

2 回答 2

1

所以当你想从视图中调用一些 laravel 控制器动作来渲染另一个局部视图时就是这种情况。尽管您可以在它周围找到一个或另一个黑客。但是,请注意,laravel 控制器并不适用于此。

当你想再次重用同一个视图但又不想在多个控制器操作中再次提供所有必要的数据时遇到这种情况时,你应该探索 Laravel View Composers。

这是官方文档链接:https ://laravel.com/docs/master/views#view-composers

这是它的更详细版本: https ://scotch.io/tutorials/sharing-data-between-views-using-laravel-view-composers

这是在没有任何补丁工作的情况下实现它的标准方法。

于 2019-09-20T12:35:51.727 回答
0

您的问题仍不清楚,但我可以尝试帮助您。我根据您给出的要求做了一个小例子。我创建了一个到动作控制器的路由,如下所示:

Route::get('test', 'TestController@test');

TestController我定义的动作test如下:

public function test()
{
  return View::make('test.home')->with('data', array('hello', 'world', '!'));
}

根据您的要求,您定义了一个包含来自另一个视图(布局)的内容的视图,并且在该布局中您使用传递给动作控制器的数据。我按如下方式创建视图:

// home.blade.php
<h1>Message</h1>
@include('test.test')

// test.blade.php
<?php print_r($data); ?>

当我访问“测试”时,我可以看到 print_r 输出。我不知道这是否是你正在做的,但在我的情况下工作正常。

我希望这可以帮助你。

于 2013-08-23T21:34:28.020 回答