Laravel:在包含的视图中使用控制器

时间:2013-08-18 17:05:54

标签: php view controller laravel laravel-3

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

当我包含观点时如何使用我的控制器?

我在Laravel 3上。

现在我有我的控制器:

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

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

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

我的主视图

@include('sale.current')

然后我的sale.current视图叫$ sales

@foreach($sales as $sale)

谢谢!

2 个答案:

答案 0 :(得分: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); ?>

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

我希望能帮助你。

答案 1 :(得分:0)

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

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

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

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

这是无需任何补丁即可实现的标准方法。