LaravelEs gibt zwei Möglichkeiten, Daten zwischen Ansichten im Framework zu teilen. Eine wird mit der View-Fassade-Share()-Methode und die andere mit der View-Fassade-Composer()-Methode implementiert Es gibt zwei Methoden. Was ist die Implementierung? Werfen wir einen Blick auf den Inhalt des nächsten Artikels.
Zuallererst ist Folgendes zu beachten: : Die View-Fassade wird verwendet, um auf die zugrunde liegende Implementierung von IlluminateContractsViewFactory
Manchmal müssen Sie Datenfragmente zwischen allen Ansichten teilen. In diesem Fall können Sie die Share-Methode der Ansichtsfassade verwenden.
1. Im Allgemeinen erstelle ich einen Basiscontroller BaseController.php unter apphttpControllersxx
<?php namespace App\Http\Controllers\ExtMan; use Illuminate\Routing\Controller; class BaseController extends Controller { public function __construct(\Auth $auth) { $this->initViewShare(); //视图共享数据 } /** * 视图共享数据方法 */ public function initViewShare() { view()->share('action_name',get_action_name()); //当前URL的方法器名 } } //视图使用 //共享视图一般都是在layout中 {{ $action_name }}
get_action_name() ist eine benutzerdefinierte Funktion.
Tipps:
Erstellen Sie appHelpersExtmanFun.php, führen Sie Autoload in Composer.json ein
"files":[ "app/Helpers/ExtmanFun.php" ]
Führen Sie „composer dump-autoload“ aus und es wird automatisch geladen
2, rufe share()
<?php namespace App\Providers; use View; class AppServiceProvider extends ServiceProvider { /** * 启动所有应用服务 * * @return void */ public function boot() { View::share('key', 'value'); //也可使用 view()->share('name','共享数据片段'); } }
In diesem Beispiel registrieren wir den View Composer beim AppServiceProvider-Dienstanbieter
Der Anbietercode lautet wie folgt:
<?php namespace App\Providers; #use Illuminate\Support\Facades\View; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { public function boot() { // 使用基于类方法 // 第一个参数可以指定共享给那个视图,多个视图用数组,共享到全部视图可以用 * // 或者某个目录下所有视图 view()->composer( //'*', 'App\Http\ViewComposers\AuthComposer' //['extman.home, welcome'], 'App\Http\ViewComposers\AuthComposer' ['extman.*'], 'App\Http\ViewComposers\AuthComposer' ); //使用基于回调函数 view()->composer('*',function($view){ $view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg')); }); } other code }
Definieren Sie die Ansichts-Composer-Klasse AppHttpViewComposersAuthComposer.php
<?php namespace App\Http\ViewComposers; use Illuminate\View\View; use Illuminate\Repositories\UserRepository; class AuthComposer { protected $users; public function __construct(UserRepository $users) { // 依赖注入通过服务容器自动解析... $this->users = $users; } //绑定数据到视图 public function compose(View $view) { $user_info = \Auth::user(); $view->with('motto', $user_info); $view->with('count', $this->users->count()); } }
Detaillierte Erläuterung der gemeinsamen Daten zwischen Laravel-Ansichten und der View Composer_php-Instanz
Laravel 5 Framework-Lernen Richtungsansicht überträgt Daten, Laravel-Framework
Das obige ist der detaillierte Inhalt vonWie teile ich Daten zwischen Ansichten im Laravel5.5-Framework? Zwei Möglichkeiten, Daten zwischen Ansichten zu teilen (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!