包含刀片模板及其自己的控制器

时间:2014-05-09 13:47:24

标签: laravel laravel-4 blade

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

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

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

我有一个路由设置,可以在直接浏览窗口小部件的视图时连接控制器:

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

有没有人知道我可以实现这一目标的方式,还是我采用了错误的方式?

1 个答案:

答案 0 :(得分:2)

在我看来,如果你对一个页面可能拥有的许多小部件中的每一个都做了新的请求,那么你的用户将会遇到经验,因为它可能变得越来越慢。

如果您的问题是小部件所需的数据,则可以使用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';