微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 如何在Laravel中重用控制器代码

我是Laravel的新手(一般来说是相对较新的MVC概念)并且已经观看了几个小时的教程并阅读了许多其他内容,但有一个简单的常见任务让我望而却步:重用相同基本元素的最佳方法是什么在跨控制器的系统(比如CMS)中?

场景:

我有一个内容管理系统,并希望为每种类型的功能使用不同的控制器:例如用于操纵帖子的帖子控制器,用于管理用户用户控制器,用于菜单项目的菜单控制器等.大多数教程推荐这种类型的工作流程.

但是,在实际的CMS前端中,我有许多动态的常见元素(来自数据库)但仍需要在所有控制器上显示.例如,菜单(来自数据库),当前用户的详细信息(用户名和根据权限的相关按钮)等.使用Blade向用户(前端)显示它很容易,但我可以’找出在后端执行此操作的最佳方法.

例如,如果每个控制器分别从DB获取菜单,那就是(缺乏)代码重用噩梦.另一方面,似乎没有中心位置可以插入此代码并将其传递到跨所有控制器的视图.我确信Laravel开发人员已经想到了这种非常常见的情况.实施它的最佳方法是什么?

解决方法:

这正是070​​00的用途!

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 举报,一经查实,本站将立刻删除。

相关推荐