CakePHP は人気のある PHP MVC フレームワークであり、Blade は Laravel フレームワークで非常に人気のあるテンプレート エンジンの 1 つです。 CakePHP には強力なテンプレート エンジンが付属していますが、場合によっては、デフォルトのテンプレート エンジンを置き換えるために他のテンプレート エンジンを使用したい場合があります。
この記事では、Blade を試してみたい開発者の助けになればと思い、CakePHP 3 で Blade テンプレート エンジンを使用する方法を紹介します。
まず、Blade をインストールする必要があります。これは Composer を通じて実行できます。プロジェクトのルート ディレクトリにあるcomposer.json ファイルに依存関係を追加します。
{ "require": { "illuminate/view": "5.8.*" } }
次に、ターミナルで composer update
コマンドを実行して依存関係をインストールします。
次に、Blade テンプレート エンジンを使用するように CakePHP を設定する必要があります。まず、次のコードを config/app.php ファイルに追加します。
'View' => [ 'className' => 'CakeViewView', 'viewPath' => APP . 'Template/', 'layoutPath' => APP . 'Template/Layout/', 'templatePath' => APP . 'Template/', 'cachePath' => CACHE . 'views/', 'helpers' => [ 'Html', 'Form', 'Url' ], 'useRenderCache' => false, 'engine' => [ 'Blade' => [ 'className' => 'CakeBladeBladeEngine', 'options' => [ 'cache_path' => TMP . 'blade_cache', 'view_path' => APP . 'Template/', 'auto_reload' => true ] ] ] ]
この構成配列では、CakePHP のビュー構成を指定し、「Blade」という名前のテンプレート エンジンを追加します。 Blade のオプションでは、キャッシュ パス、ビュー パス、およびテンプレートを自動的にリロードするかどうかを指定します。
次に、ブレード エンジンを定義するファイルを src/View/BladeEngine.php に追加する必要があります。
<?php namespace CakeBlade; use CakeViewEngineEngine; use IlluminateViewCompilersBladeCompiler; use IlluminateViewEnginesCompilerEngine; use IlluminateViewFactory; use IlluminateViewFileViewFinder; class BladeEngine extends Engine { public $Factory; public function __construct($view = null, $layout = null) { parent::__construct($view, $layout); $config = CakeCoreConfigure::read('App'); $viewPath = $config['Template']['templatePath']; $cachePath = $config['engine']['Blade']['options']['cache_path']; $this->Factory = new Factory(new FileViewFinder([$viewPath]), new CompilerEngine(new BladeCompiler(new Filesystem, $cachePath))); } public function render($template, $layout = null) { return $this->Factory->make($template, compact('data'))->render(); } }
このクラスでは、CakePHP の Engine クラスを継承する BladeEngine クラスを定義します。コンストラクターでは、CakePHP の設定を使用してビュー パスを読み取り、それを Blade のコンストラクターに渡して、Blade がテンプレート ファイルを見つけられるようにします。さらに、パフォーマンスを向上させるためにキャッシュ パスを追加しました。レンダリング関数では、Blade の Factory クラスを使用してテンプレートをレンダリングします。
ブレード エンジンの構成と定義が完了したので、テンプレート ファイルの作成を開始できます。 CakePHP では、src/Template/ ディレクトリにテンプレート ファイルを作成できます。
たとえば、src/Template/Pages/home.blade.php に単純な Blade テンプレートを作成できます。
@extends('Layout.default') @section('content') <div class="jumbotron"> <h1>Welcome to CakeBlade</h1> <p>CakePHP 3 + Blade Template Engine.</p> <p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a></p> </div> @endsection
このテンプレートでは、@extends を使用してレイアウトを指定します。 @section と @endsection の間のコンテンツは、レイアウトの @yield('content') ディレクティブに挿入されます。
ここで、ブレード エンジンを呼び出して、コントローラーでテンプレートをレンダリングできます。たとえば、PagesController に次のコードを追加します。
public function home() { $this->getViewBuilder()->setClassName('CakeBlade.Blade'); $this->set(compact('data')); $this->render('home'); }
テンプレートをレンダリングする前に、使用するビュー クラスを指定する必要があります。次に、データをビューに渡し、ロードするテンプレート ファイル名を指定します。
これで、ブラウザーでページにアクセスして、Blade が適切に動作しているかどうかを確認できます。アドレス バーにファイル名 (http://localhost/cake_blade/pages/home など) を入力すると、先ほど作成した Blade テンプレートが表示されます。これは、テンプレート ファイルで定義したものと同じです。
概要
この記事では、CakePHP 3 の Blade テンプレート エンジンを使用してデフォルトのテンプレート エンジンを置き換える方法を紹介しました。このようにして、Blade が提供する強力な構文と機能を使用して Web アプリケーションを開発できます。機能が豊富なテンプレート エンジンを探している場合は、Blade が良い選択です。
以上がCakePHP で Blade を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。