搜索

首页  >  问答  >  正文

laravel 如果通过父类层操作 将参数 传递到 Blade页面布局中

layout中用到的变量,如果从控制器传参,需要每个视图都重复操作!
如何解决一次运算后,将结果传递给layout中,供所有视图使用(不想在layout视图中出现业务代码)。

eg:
1. 权限管理,根据不同的用户,设置不同的菜单!
2. 菜单中的动态数字,比如 【当日订单(50)】,那个50需要所有的控制器获取数据后,再传递给视图!

阿神阿神2789 天前425

全部回复(3)我来回复

  • 迷茫

    迷茫2017-05-16 16:58:01

    有两种方法可以解决:

    第一:传统的ViewComposerProvider

    class NavViewComposerProvider extends ServiceProvider {
    
    public function boot(){
        view()->composer('partials.nav', function ($view) {
    
            $view->with('userAtLayout', User::find(Auth::user()->id));
            //根据自己的需求改呗
    
        });
      }
    }
    

    第二,Laravel 5.1新特性@inject:

    @inject('var','Class')
    // var 变量名 Class绑定的类名
    
    

    比如你可以这样:

    @inject('nav','App\SiteNav')
    
    

    在SiteNav中查询数据就可以了。

    题外话:认真看文档,可以解决你越到的80%的问题。

    Happy Hacking

    回复
    0
  • 巴扎黑

    巴扎黑2017-05-16 16:58:01

    雷雷

    回复
    0
  • PHPz

    PHPz2017-05-16 16:58:01

    楼上说的方法都不靠谱,获取不了当前url参数来传入你的函数中的

    回复
    0
  • 取消回复