【问题标题】:Include Blade template with it's own controller包含 Blade 模板和它自己的控制器
【发布时间】:2014-06-27 07:00:00
【问题描述】:

我对 Laravel 很陌生,所以还没有解决所有的小技巧。我正在制作可以在我的网站(日历、图像裁剪器、地图等)周围重复使用的小部件,作为刀片模板并将它们包括在其他视图中,如下所示:

@include('widgets.calendar', array('month'=>$month, 'year'=>$year))

我的问题是我找不到将它包含在视图中的方法,它仍然使用自己的控制器在显示之前引入一些数据。只有它所在页面的控制器在运行。

我设置了一个路由,当直接浏览到小部件的视图时,它可以连接控制器:

Route::get('/widgets/calendar', array('as' => 'widgets.calendar', 'uses' => 'widgets\CalendarController@getCalendar'));

有谁知道我可以做到这一点的方法,还是我走错了路?

【问题讨论】:

    标签: laravel laravel-4 blade


    【解决方案1】:

    在我看来,如果您对页面可能拥有的众多小部件中的每一个都执行新请求,那么您的用户体验会受到影响,因为它可能会变得越来越慢。

    如果您的问题是小部件上需要的数据,您可以使用 View::composers():

    View::composer(array('widgets.calendar'), function($view)
    {
        $view->with('month', new \Carbon\Carbon);
        $view->with('year', new \Carbon\Carbon);
    });
    

    并且$month$year 将可用于这些视图,因此您无需在包含中传递它们:

    @include('widgets.calendar')
    

    您可以为此创建一个文件,例如 app/composers.php 并将其加载到您的 app/start/global.php 中:

    require app_path().'/composers.php';
    

    【讨论】:

    • 啊,当然是查看作曲家。我忘了那些!是否完全符合需要,谢谢
    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 2014-03-12
    • 2014-04-07
    相关资源
    最近更新 更多