ビュー
- View Composer
ビューの作成
{ヒント} Blade テンプレートの作成方法について詳しく知りたい場合は、まず、Blade の完全なドキュメントを確認してください。
ビューにはアプリケーションの HTML が含まれており、コントローラー/アプリケーション ロジックをプレゼンテーション ロジックから分離します。ビュー ファイルは
resources/views
ディレクトリに保存されます。単純なビューは次のようになります。<!-- 此视图文件位置 resources/views/greeting.blade.php --> <html> <body> <h1>Hello, {{ $name }}</h1> </body> </html>
ビュー ファイルは
resources/views/greeting.blade.php
にあり、グローバル ヘルパー関数view## を使用して返すことができます。 #:
Route::get('/', function () { return view('greeting', ['name' => 'James']); });
ご覧のとおり、view
もちろん、ビュー ファイルはヘルパーに渡される最初のパラメーターは、
resources/viewsディレクトリ内のビュー ファイルの名前に対応します。 2 番目のパラメーターは、ビューで使用できるデータの配列です。この場合、Blade 構文を使用してビューに表示される
name変数を渡します。
resources/views
ディレクトリのサブディレクトリにネストすることもできます。 「ドット」表記は、ネストされたビューを参照するために使用できます。たとえば、ビューが
resources/views/admin/profile.blade.phpに保存されている場合、次のように参照できます。
return view('admin.profile', $data);
ビュー ファイルが存在します ビュー ファイルが存在するかどうかを確認する必要がある場合は、View
ファサードを使用できます。ビュー ファイルが存在する場合、
existsメソッドは戻ります
true:
use Illuminate\Support\Facades\View;if (View::exists('emails.customer')) { // }
最初に使用可能なビューを作成するfirst
メソッドを使用すると、次のような最初のビューを作成できます。指定された配列ビューに存在します。これは、開発したアプリケーションまたはサードパーティ パッケージでビューのカスタマイズまたはオーバーライドが許可されている場合に役立ちます:
return view()->first(['custom.admin', 'admin'], $data);
もちろん、View
ファサードを通じてこのメソッドを呼び出すこともできます:
use Illuminate\Support\Facades\View;return View::first(['custom.admin', 'admin'], $data);
パラメータをビューに渡す 前の例で見たように、一連のデータをビューに渡すことができます。 :return view('greetings', ['name' => 'Victoria']);
この方法で情報を渡す場合、データはキーと値のペアを含む配列である必要があります。ビューでは、対応するキーを使用して各値にアクセスできます (例:<?php echo $key; ?>
)。完全なデータ配列を
viewヘルパー関数に渡す代わりに、
withメソッドを使用して個々のデータ フラグメントをビューに追加できます。
データをアプリケーションのすべてのビューと共有する必要がある場合は、サービスでこれを行うことができます。プロバイダーのbootメソッドは、ビュー Facade の
shareメソッドを呼び出します。たとえば、それらを
ビュー コンポーザーのAppServiceProvider
に追加することも、それらに対して別のサービス プロバイダーを生成することもできます:return view('greeting')->with('name', 'Victoria');
compose
メソッドは、ビューがレンダリングされる前に呼び出され、
Illuminate\View \ に渡されます。インスタンスを表示します。
withメソッドを使用してデータをビューにバインドできます。
{ヒント} すべてのビュー コンポーザはサービス コンテナを通じて解決されるため、ビュー コンポーザのコンストラクタに注入する必要がある依存関係をタイプヒントで指定できます。
ビュー コンポーザを複数のビューに追加する最初の引数としてビューの配列をcomposer
メソッドに渡すことで、複数のビューへのビュー コンポーザー:
<?php namespace App\Http\View\Composers; use Illuminate\View\View; use App\Repositories\UserRepository; class ProfileComposer{ /** * The user repository implementation. * * @var UserRepository */ protected $users; /** * Create a new profile composer. * * @param UserRepository $users * @return void */ public function __construct(UserRepository $users) { // Dependencies automatically resolved by service container... $this->users = $users; } /** * Bind data to the view. * * @param View $view * @return void */ public function compose(View $view) { $view->with('count', $this->users->count()); } }
composer
このメソッドはワイルドカード文字
# も受け入れます。これは、ビュー コンポーザーをすべてのビューに追加することを意味します:
View::composer( ['profile', 'dashboard'], 'App\Http\View\Composers\MyViewComposer' );
ビュー コンストラクターViewscreators はビュー コンポジターとよく似ています。唯一の違いは、ビュー コンストラクターはビューがインスタンス化された直後に実行されるのに対し、ビュー コンポジターはビューがレンダリングされる直前に実行されることです。 creator
メソッドを使用してビュー コンストラクターを登録します。
View::composer('*', function ($view) { // });
この記事は、