我第一次在Laravel工作
我必须在页眉和页脚中创建前端菜单动态[类别列表将来自数据库]。我必须使用哪个控制器。? 此框架中可用的任何公共控制器,用于将数据发送到页眉和页脚。
当我在HomeController索引Action中收到数据时,它仅适用于主页。
class HomeController {
public function index()
{
$categories = Category::get();
return view('home', compact('categories'));
}
}
感谢。
答案 0 :(得分:2)
我假设您在主布局文件中使用页眉和页脚。在这种情况下,您需要发送每个请求的所有页眉/页脚信息。这将是愚蠢的,而是使用View Composers:
在appServiceProvider
方法
boot()
中定义它们
view()->composer('home', function($view) {
$view->with('categories', App\Category::all());
});
在我的例子中,我创建了'home'
视图的名称,因为它在您的示例中。但我会创建一个名为布局的主文件,并包含页眉和页脚部分。如果您希望标题中包含类别,则可以使用标题数据生成view()->composer('layout.header')
。
答案 1 :(得分:2)
这是View Composers的完美案例:
视图组合器是在呈现视图时调用的回调或类方法。如果每次渲染视图时都希望将数据绑定到视图,则视图编辑器可以帮助您将该逻辑组织到一个位置。
您可以通过将一组视图作为第一个参数传递给composer方法,一次将视图编辑器附加到多个视图:
View::composer(['partials.header', 'partials.footer'], function ($view) {
$view->with('categories', [1, 2, 3]); // bind data to view
});
现在,您只需在视图中检索$categories
(刀片模板)。
提示:通常的做法是创建一个名为ComposerServiceProvider
的新服务提供程序,并将上述编写器逻辑放在boot()
方法中。
答案 2 :(得分:0)
我必须使用哪个控制器。?
任何
此框架中可用于将数据发送到页眉和页脚的任何常用控制器
没有。 您可以控制从Controller返回的内容作为响应。您可以设计布局并将其分解为多个部分,并具有扩展它们的视图。如果您设置了包含页眉和页脚的布局并且视图从中扩展,则可以使用View Composer在渲染时将数据传递到该布局,这样您每次需要返回时都不必执行此操作看待自己。