Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der gemeinsam genutzten Daten und Ansicht von Composer_php-Instanzen zwischen Laravel-Ansichten

Detaillierte Erläuterung der gemeinsam genutzten Daten und Ansicht von Composer_php-Instanzen zwischen Laravel-Ansichten

WBOY
WBOYOriginal
2016-08-17 13:02:371224Durchsuche

1. Daten zwischen Ansichten teilen

Zusätzlich zur Übergabe bestimmter Daten in einer einzelnen Ansicht ist es manchmal erforderlich, dieselben Daten in allen Ansichten zu übergeben, d. h. wir müssen Daten in verschiedenen Ansichten gemeinsam nutzen. Um dies zu erreichen, müssen Sie die share-Methode der View Factory verwenden.

Globale Hilfsfunktion view ähnelt response. Wenn Parameter übergeben werden, wird die IlluminateViewView-Instanz zurückgegeben. Wenn keine Parameter übergeben werden, wird die IlluminateViewFactory-Instanz zurückgegeben. So können wir Daten zwischen Ansichten austauschen, indem wir die folgende Methode in der boot-Methode des Dienstanbieters verwenden:

<&#63;php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
  /**
   * Bootstrap any application services.
   *
   * @return void
   */
  public function boot()
  {
    //视图间共享数据
    view()->share('sitename','Laravel学院');
  }

  /**
   * Register any application services.
   *
   * @return void
   */
  public function register()
  {
    //
  }
}

Wir definieren zwei Routen in routes.php:

Route::get('testViewHello',function(){
  return view('hello');
});

Route::get('testViewHome',function(){
  return view('home');
});

Erstellen Sie dann eine resources/views-Ansichtsdatei im Verzeichnis home.blade.php mit folgendem Inhalt:

{{$sitename}}首页

Erstellen Sie eine weitere hello.blade.php Ansichtsdatei:

欢迎来到{{$sitename}}!

Greifen Sie im Browser auf http://laravel.app:8000/testViewHello bzw. http://laravel.app:8000/testViewHome zu, und der Wert von $sitename kann analysiert werden.

2. Komponisten anzeigen

Manchmal möchten wir bei jedem Rendern der Ansicht bestimmte Daten an die Ansicht binden, z. B. die Informationen des angemeldeten Benutzers. In diesem Fall müssen wir View Composer über die Composer-Methode der Ansicht implementieren Fabrik. Der zweite Rückrufparameter dieser Methode unterstützt zwei Methoden, die auf Controller-Aktionen und Abschlussfunktionen basieren.

Der Einfachheit halber basieren wir weiterhin auf AppServiceProvider und erstellen keinen separaten Dienstleister. Hier übergeben wir Abschlussparameter (Controller-Aktionen beziehen sich auf das Ansichtsdokument):

<&#63;php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
  /**
   * Bootstrap any application services.
   *
   * @return void
   */
  public function boot()
  {
    //视图间共享数据
    view()->share('sitename','Laravel学院');

    //视图Composer
    view()->composer('hello',function($view){
      $view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg'));
    });
  }

  /**
   * Register any application services.
   *
   * @return void
   */
  public function register()
  {
    //
  }
}

Ändern hello.blade.php Ansichtsdatei:

Willkommen bei {{$sitename}}!

<h3>用户信息</h3>
用户名:{{$user['name']}}<br>
用户头像:{{$user['avatar']}}

Zugriff auf http://laravel.app:8000/testViewHello im Browser, der Ausgabeinhalt lautet wie folgt:

欢迎来到Laravel学院!

用户信息

用户名:test
用户头像:/path/to/test.jpg

Sie können Daten auch an mehrere Ansichten übergeben:

view()->composer(['hello','home'],function($view){
  $view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg'));
});

Auch alle Ansichten (Platzhalter * verwenden):

view()->composer('*',function($view){
  $view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg'));
});

Im Folgenden finden Sie Einzelheiten zum Datenaustausch zwischen Laravel-Ansichten und View Composer. Ich hoffe, dass dieser Artikel für alle, die Laravel lernen, hilfreich sein wird.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn