创建需要数据库的公共视图的最佳方式


Best way of making common views that require database

例如,我们有一个菜单,它将通过从数据库中获取slugs和title来创建url。所有的页面都需要菜单。在从数据库中获取的控制器传递菜单数据时,我将让每个控制器重复相同的代码,这不是DRY。所以我怎么能包括他们在"布局"视图不要求每个控制器传递菜单数据?如果这是一个最简单的,请原谅,我今天开始laravel

你可以使用Traits。用你需要的方法定义一个trait类,并且"只在你需要的类中使用它们"。你在BaseController中定义的任何东西都可以被所有扩展它的东西使用这不是你需要的

MenuTrait

trait MenuControls 
{
    public function createMenu()
    {
    }
}

需要菜单控件的类:

class INeedMenusController extends BaseController
{
    use MenuControls;
    public function doSomething()
    {
        $someVar = $this->createMenu();
    }
}