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

WBOY
Freigeben: 2016-08-17 13:02:37
Original
1232 Leute haben es durchsucht

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()
  {
    //
  }
}
Nach dem Login kopieren

Wir definieren zwei Routen in routes.php:

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

Route::get('testViewHome',function(){
  return view('home');
});
Nach dem Login kopieren

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

{{$sitename}}首页
Nach dem Login kopieren

Erstellen Sie eine weitere hello.blade.php Ansichtsdatei:

欢迎来到{{$sitename}}!
Nach dem Login kopieren

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()
  {
    //
  }
}
Nach dem Login kopieren

Ändern hello.blade.php Ansichtsdatei:

Willkommen bei {{$sitename}}!

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

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

欢迎来到Laravel学院!

用户信息

用户名:test
用户头像:/path/to/test.jpg
Nach dem Login kopieren

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'));
});
Nach dem Login kopieren

Auch alle Ansichten (Platzhalter * verwenden):

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

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.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage