suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wenn Laravel über die übergeordnete Klassenebene arbeitet, werden die Parameter an das Blade-Seitenlayout übergeben.

Wenn bei im Layout verwendeten Variablen Parameter vom Controller übergeben werden, muss der Vorgang für jede Ansicht wiederholt werden!
So lösen Sie das Problem der Übergabe des Ergebnisses an das Layout nach einer Berechnung, damit alle Ansichten es verwenden können (ich möchte nicht, dass Geschäftscode in der Layoutansicht angezeigt wird).

zB:
1. Berechtigungsverwaltung, unterschiedliche Menüs für unterschiedliche Benutzer festlegen!
2. Dynamische Zahlen im Menü, wie z. B. [Heutige Bestellung (50)], bei der 50 alle Controller dazu zwingen, die Daten abzurufen und sie dann an die Ansicht weiterzugeben!

阿神阿神2789 Tage vor423

Antworte allen(3)Ich werde antworten

  • 迷茫

    迷茫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

    Antwort
    0
  • 巴扎黑

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

    phpView::share('name', $var)
    

    Antwort
    0
  • PHPz

    PHPz2017-05-16 16:58:01

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

    Antwort
    0
  • StornierenAntwort