ホームページ  >  記事  >  バックエンド開発  >  CakePHP で Blade を使用するにはどうすればよいですか?

CakePHP で Blade を使用するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-06-04 10:01:461469ブラウズ

CakePHP は人気のある PHP MVC フレームワークであり、Blade は Laravel フレームワークで非常に人気のあるテンプレート エンジンの 1 つです。 CakePHP には強力なテンプレート エンジンが付属していますが、場合によっては、デフォルトのテンプレート エンジンを置き換えるために他のテンプレート エンジンを使用したい場合があります。

この記事では、Blade を試してみたい開発者の助けになればと思い、CakePHP 3 で Blade テンプレート エンジンを使用する方法を紹介します。

  1. Blade のインストール

まず、Blade をインストールする必要があります。これは Composer を通じて実行できます。プロジェクトのルート ディレクトリにあるcomposer.json ファイルに依存関係を追加します。

{
    "require": {
        "illuminate/view": "5.8.*"
    }
}

次に、ターミナルで composer update コマンドを実行して依存関係をインストールします。

  1. CakePHP の設定

次に、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 クラスを使用してテンプレートをレンダリングします。

  1. テンプレート ファイルの作成

ブレード エンジンの構成と定義が完了したので、テンプレート ファイルの作成を開始できます。 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') ディレクティブに挿入されます。

  1. レンダリング テンプレート

ここで、ブレード エンジンを呼び出して、コントローラーでテンプレートをレンダリングできます。たとえば、PagesController に次のコードを追加します。

public function home()
{
    $this->getViewBuilder()->setClassName('CakeBlade.Blade');
    $this->set(compact('data'));
    $this->render('home');
}

テンプレートをレンダリングする前に、使用するビュー クラスを指定する必要があります。次に、データをビューに渡し、ロードするテンプレート ファイル名を指定します。

  1. テストの実行

これで、ブラウザーでページにアクセスして、Blade が適切に動作しているかどうかを確認できます。アドレス バーにファイル名 (http://localhost/cake_blade/pages/home など) を入力すると、先ほど作成した Blade テンプレートが表示されます。これは、テンプレート ファイルで定義したものと同じです。

概要

この記事では、CakePHP 3 の Blade テンプレート エンジンを使用してデフォルトのテンプレート エンジンを置き換える方法を紹介しました。このようにして、Blade が提供する強力な構文と機能を使用して Web アプリケーションを開発できます。機能が豊富なテンプレート エンジンを探している場合は、Blade が良い選択です。

以上がCakePHP で Blade を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。