laravel フレームワーク内のビュー間でデータを共有するには 2 つの方法があります。1 つは view facade share() メソッドを使用して実装され、もう 1 つは view facade combos() メソッドを使用して実装されます。 2つの方法は?次回の記事の内容を見ていきましょう。
まず第一に、注意すべき点が 1 つあります : View ファサードは、IlluminateContractsViewFactory の基になる実装にアクセスするために使用されます
間でデータ フラグメントを共有する必要がある場合があります。すべてのビュー、これはビュー ファサードの共有メソッドを使用できます。
1. 通常、apphttpControllersxx の下に基本的なコントローラー BaseController.php を作成します。
<?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() はカスタマイズされた関数です。
ヒント:
appHelpersExtmanFun.phpを作成し、composer.jsonの自動ロードを導入します
"files":[ "app/Helpers/ExtmanFun.php" ]
composer dump-autoloadを実行すると、自動的にロードされます
2、AppServiceProviderサービスプロバイダーのブートメソッドでshareを呼び出します(または作成します)新しいプロバイダー) ()
<?php namespace App\Providers; use View; class AppServiceProvider extends ServiceProvider { /** * 启动所有应用服务 * * @return void */ public function boot() { View::share('key', 'value'); //也可使用 view()->share('name','共享数据片段'); } }
ビュー コンポーザーは、ビューがレンダリングされるたびにビューのデータをバインドする必要がある場合のコールバック関数またはクラス メソッドです。ユーザーのログイン情報などのビュー。 Composer() を使用すると、ロジックを別の場所に整理できます。
この例では、AppServiceProvider サービス プロバイダーにビュー コンポーザーを登録します。
プロバイダー コードは次のとおりです。
<?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 }
新しいサービス プロバイダーを作成してビュー コンポーザーの登録を含める場合は、サービス プロバイダーを追加する必要があります。構成ファイル ビューコンポーザーは config/app.php のプロバイダー配列に登録されています。 AuthComposer@compose メソッドは、extman ディレクトリ内のすべてのビューがレンダリングされるたびに実行されます。
ビューコンポーザークラスを定義します 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()); } }
すべてのビュー コンポーザーはサービス コンテナーを通じて解決されるため、ビュー コンポーザーのコンストラクターに注入する必要がある依存関係をタイプヒントで指定できます。
おすすめ関連記事:
LaravelビューとビューComposer_phpインスタンス間の共有データの詳細説明Laravel 5フレームワーク、ビューへのデータ転送方法を学ぶ、laravelフレームワーク以上がlaravel5.5フレームワークでビュー間でデータを共有するにはどうすればよいですか? ビュー間でデータを共有する2つの方法(コードを使用)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。