[ Laravel 5.2 ドキュメント ] 基本 -- ビュー

WBOY
リリース: 2016-06-23 13:20:16
オリジナル
786 人が閲覧しました

1. 基本的な使用法

ビューにはアプリケーションの HTML コードが含まれており、アプリケーションのコントローラー ロジックとプレゼンテーション ロジックを分離します。ビュー ファイルは、resources/views ディレクトリに保存されます。

ここに簡単なビューがあります:

<!-- 该视图存放 resources/views/greeting.php --><html>    <body>        <h1>Hello, <?php echo $name; ?></h1>    </body></html>
ログイン後にコピー

このビューはresources/views/greeting.phpに保存されているので、次のようにグローバルヘルパー関数ビューで返すことができます:

Route::get('/', function () {    return view('greeting', ['name' => 'James']);});
ログイン後にコピー

ご覧のとおり、ビューに渡します。メソッドの最初のパラメータは、resources/views ディレクトリ内の対応するビュー ファイルの名前で、2 番目のパラメータは、ビュー内のすべての有効なデータを含む配列です。この例では、name 変数を渡し、echo を実行することでビューに表示します。

もちろん、ビューは、「.」を使用して、resources/views のサブディレクトリにネストすることもできます。たとえば、ビューのストレージ パスが resource/views/admin/profile.php である場合、これが可能です。これを実行してください:

return view('admin.profile', $data);
ログイン後にコピー

ビューが存在するかどうかを判断する

ビューが存在するかどうかを判断する必要がある場合は、パラメータなしでビューの後にexists メソッドを呼び出すことができます。ビューがディスク上に存在する場合は、true を返します。

if (view()->exists('emails.customer')) {    //}
ログイン後にコピー

パラメーターを指定せずにビューを呼び出すと、IlluminateContractsViewFactory インスタンスが返されるため、ファクトリ上のすべてのメソッドを呼び出すことができます。

2. データを表示する

ビューにデータを渡す

上の例でわかるように、単純に配列を介してデータをビューに渡すことができます:

return view('greetings', ['name' => 'Victoria']);
ログイン後にコピー

この方法でデータを渡す場合、$dataキーと値のペアの配列として、ビュー内で、 などの対応するキーを使用してデータ値にアクセスできます。さらに、 with メソッドを使用して独立したデータ フラグメントをビューに追加することもできます:

$view = view('greeting')->with('name', 'Victoria');
ログイン後にコピー

ビュー間でデータを共有する

すべてのビュー間でデータ フラグメントを共有する必要がある場合があります。この場合、ビューの share メソッドを使用できます。 Factory を使用するには、通常、サービス プロバイダーのブート メソッドで share メソッドを呼び出す必要があります。これを AppServiceProvider に追加するか、独立したサービス プロバイダーを生成して保存します。

<?phpnamespace App\Providers;class AppServiceProvider extends ServiceProvider{    /**     * 启动所有应用服务     *     * @return void     */    public function boot()    {        view()->share('key', 'value');    }    /**     * 注册服务提供者     *     * @return void     */    public function register()    {        //    }}
ログイン後にコピー

3. View Composer

View Composerレンダリングされるコールバックまたはクラスメソッドです。ビューがレンダリングされるたびにバインドしたいデータがある場合は、View Composer を使用してロジックを別の場所に整理できます。

まず、ビュー Composer をサービスプロバイダーに登録します。IlluminateContractsViewFactory の基になる実装にアクセスするために、Laravel にはデフォルトのビュー Composer ディレクトリが含まれていないことに注意してください。たとえば、AppHttpViewComposers ディレクトリを作成できます:

<?phpnamespace App\Providers;use Illuminate\Support\ServiceProvider;class ComposerServiceProvider extends ServiceProvider{    /**     * 在容器中注册绑定.     *     * @return void     * @author http://laravelacademy.org     */    public function boot()    {        // 使用基于类的composers...        view()->composer(            'profile', 'App\Http\ViewComposers\ProfileComposer'        );        // 使用基于闭包的composers...        view()->composer('dashboard', function ($view) {        });    }    /**     * 注册服务提供者.     *     * @return void     */    public function register()    {        //    }}
ログイン後にコピー

View Composer の登録を含めるために新しいサービス プロバイダーを作成する場合は、構成ファイル config/app.php のプロバイダー配列にサービス プロバイダーを追加する必要があります。

Composer を登録したので、プロファイル ビューがレンダリングされるたびに ProfileComposer@compose が実行されます。 次に、Composer クラスを定義します。

<?phpnamespace App\Http\ViewComposers;use Illuminate\Contracts\View\View;use Illuminate\Users\Repository as UserRepository;class ProfileComposer{    /**     * 用户仓库实现.     *     * @var UserRepository     */    protected $users;    /**     * 创建一个新的属性composer.     *     * @param UserRepository $users     * @return void     */    public function __construct(UserRepository $users)    {        // Dependencies automatically resolved by service container...        $this->users = $users;    }    /**     * 绑定数据到视图.     *     * @param View $view     * @return void     */    public function compose(View $view)    {        $view->with('count', $this->users->count());    }}
ログイン後にコピー

ビューがレンダリングされる前に、Composer クラスの compose メソッドが呼び出されます。同時に、IlluminateContractsViewView はこのメソッドを注入し、その with メソッドを使用してデータをビューにバインドできるようにします。

注: すべてのビュー Composer はサービス コンテナを通じて解決されるため、Composer クラスのコンストラクターで必要な依存関係を宣言できます。

Composer を複数のビューに追加する

ビューの配列を最初の引数として Composer メソッドに渡すことで、ビュー Composer を複数のビューに一度に追加できます:

view()->composer(    ['profile', 'dashboard'],    'App\Http\ViewComposers\MyViewComposer');
ログイン後にコピー

Composer メソッドは * ワイルドカードを受け入れ、Composer を許可しますすべてのビューに追加:

view()->composer('*', function ($view) {    //});
ログイン後にコピー

4. View Creator

View Creator と View Composer は非常に似ていますが、前者はビューがレンダリングされるまで待つのではなく、ビューがインスタンス化された直後に期限切れになる点が異なります。 create メソッドを使用してビュークリエーターを登録します:

view()->creator('profile', 'App\Http\ViewCreators\ProfileCreator');
ログイン後にコピー
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート