我是Laravel的新手(一般来说是相对较新的MVC概念)并且已经观看了几个小时的教程并阅读了许多其他内容,但有一个简单的常见任务让我望而却步:重用相同基本元素的最佳方法是什么在跨控制器的系统(比如CMS)中?
场景:
我有一个内容管理系统,并希望为每种类型的功能使用不同的控制器:例如用于操纵帖子的帖子控制器,用于管理用户的用户控制器,用于菜单项目的菜单控制器等.大多数教程推荐这种类型的工作流程.
但是,在实际的CMS前端中,我有许多动态的常见元素(来自数据库)但仍需要在所有控制器上显示.例如,菜单(来自数据库),当前用户的详细信息(用户名和根据权限的相关按钮)等.使用Blade向用户(前端)显示它很容易,但我可以’找出在后端执行此操作的最佳方法.
例如,如果每个控制器分别从DB获取菜单,那就是(缺乏)代码重用噩梦.另一方面,似乎没有中心位置可以插入此代码并将其传递到跨所有控制器的视图.我确信Laravel开发人员已经想到了这种非常常见的情况.实施它的最佳方法是什么?
解决方法:
这正是07000的用途!
View Composers允许您注册在呈现特定视图之前执行的回调.通常在Service Provider中注册它们.您可以使用现有的AppServiceProvider或为其创建新的ComposerServiceProvider.
public function boot(){
View::composer('menu', function($view){
$menu = DB::table('menu')->get();
$view->with('menu', $menu);
});
}
您还可以指定包含编写器逻辑的类. Read more about that in the docs
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。