Laravel使多个路由具有共同参数

时间:2014-11-13 09:39:13

标签: laravel routes

问题标题令人困惑我知道,不能用更好的方式来描述我的情况......我有很多电子商务网站的路线,我使用刀片模板系统,所以有一个header.blade。用于本网站所有页面的php。在标题中,有一个购物车图标,当它悬停在它上面时,当前用户的购物车中的所有产品都会显示出来。问题在于包含此标题模板的某个页面的所有路由,我必须添加

$shopping_cart_info = ProductController::getShoppingCartInfo();
return View::make('somePageView')->with('shopping_cart_info', $shopping_cart_info); 

对应控制器功能中的每一个,并且有超过50条路线需要这样做...有没有办法对这些路线进行分组,让它们都拥有$shopping_cart_info所以我不必逐个添加它?

1 个答案:

答案 0 :(得分:1)

当然,除了你不在路线上这样做。它被称为视图作曲家,它的工作原理如下:

// adds shopping cart info to the view
View::composer(['some.view.1', 'some.view.2'], function($view){
    $shopping_cart_info = ProductController::getShoppingCartInfo();
    $view->with('shopping_cart_info', $shopping_cart_info);
});

现在,视图“some.view.1”和“some.view.2”都将包含购物车信息变量。您可以拥有尽可能多的视图。在你的情况下,听起来你有一个视图使用它,但从大量的地方调用。视图作曲家就是为了这类事而创作的! :)

对于较小的项目,我通常会创建一个文件app/composers.php并从app/global.php文件中自动加载文件,如下所示:require app_path().'/composers.php';

文档:http://laravel.com/docs/4.2/responses#view-composers