我在HomeController中有这样的代码:
public function index() {
$comments = Comment::get_recent();
$top = User::get_top_uploaders()->get();
$top_something = User::get_top_something_uploaders()->get();
$data = Post::orderBy('created_at', 'DESC')->paginate(6);
return View::make('index') ->with('data', $data)
->with('comments', $comments)
->with('top', $top)
->with('top_something', $top_something);
}
效果很好,但是我需要使用相同的数据制作另一个视图,不仅用于索引,还用于其他页面,例如comments()
,post()
...
如何在HomeController中实现这一点,我不需要将它们复制并粘贴到每个控制器中?
答案 0 :(得分:3)
使用分享方式传递您的数据:
// for single controller:
class SomeController extends BaseController {
public function __construct()
{
$data = Post::orderBy('created_at', 'DESC')->paginate(6);
View::share('data', $data);
}
}
对于所有控制器,您可以将此代码放在BaseController的构造函数
中答案 1 :(得分:2)
如果每次将这段HTML放入局部,然后使用View Composer,则使用相同的HTML显示数据。
创建一个视图并随意调用它并将其放入HTML中以获取数据。
在需要部分包含@include('your.partial')
在app / routes.php或更好的app / composers.php中(不要忘记自动加载)
View::Composer('your.partial', function($view)
{
$data = Post::orderBy('created_at', 'DESC')->paginate(6);
$view->with('data', $data);
});
现在,只要您的某个模板中包含该部分,就可以访问您的数据