型号:Comment.php
class Comment extends Eloquent {
protected $table = 'comments';
public $timestamps = true;
}
控制器:PageController.php
class PageController extends BaseController {
$top_comments = Comment::take(3)->get();
return View::make('page', array('top_comments' => $top_comments));
}
查看:page.blade.php
@foreach ($top_comments as $comment)
user #{{ $comment->user_id }}:<br />
{{ $comment->comment}}
@endforeach
这适用于page.blade.php
视图,我可以将其定义为路径(/page
)。但是,我似乎无法弄清楚如何在全球范围内实现这一目标。
示例:我希望能够在@foreach
文件中使用包含$top_comments
的{{1}}。现在,如果我要使用上述内容,它在master.blade.php
上运行良好,但在/page
,/
,/about
答案 0 :(得分:6)
您可以使用View::share('top_comments', Comment::take(3)->get());
使其随处可用。当然,如果你想在每个可能的视图中使用它,无论你加载什么页面,你都必须把它放在一个加载的地方。 (一个这样的地方将是你__construct()
的{{1}}方法,但我怀疑这可以被认为是最佳做法。不知道我自己把它放在哪里。)
另一种方法是利用视图编辑器,如下所示:
BaseController
如果您想在View::composer('master', function($view)
{
$view->with('top_comments', Comment::take(3)->get());
});
中想要它,无论它从哪里加载,都可以使用,因为它与该视图绑定。如果您选择此选项,我建议您创建一个文件master.blade.php
并将其包含在composers.php
中。
那就是说,我假设上面的控制器示例留下了一些东西,因为看起来它缺少一个方法声明。