【问题标题】:Laravel : Using controller in included viewLaravel:在包含的视图中使用控制器
【发布时间】:2013-08-20 12:42:58
【问题描述】:

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

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

我在 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)

谢谢!

【问题讨论】:

  • 你能提供一些代码吗?不清楚你在问什么。
  • 我做了,我希望现在更清楚了:)

标签: php view controller laravel laravel-3


【解决方案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

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

【讨论】:

    【解决方案2】:

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

    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 输出。我不知道这是否是你正在做的,但在我的情况下工作正常。

    希望对你有帮助。

    【讨论】:

    • 感谢您的回复,但是我正试图做相反的事情。将您的test 视图视为可以在任何地方的模块。 “测试”视图需要包含在任何页面上的可能性,但这并不意味着它会被包含在内。那么实现这一目标的最佳方法是什么?为每个请求传递我家中的数据并不是一件好事,而且我已经为我的test 视图提供了一个特定的控制器。
    • 也许定义一个包含公共数据的section 可以帮助您。我认为嵌套视图与您想要实现的目标有关。 Here 你可以在 Laravel 3 中看到视图和响应的所有可能用途。
    猜你喜欢
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多