TwigView ドキュメント
pieceofcake2/twig-view は、Twig テンプレート言語 (Twig 3.x) を CakePHP 2 に統合し、 Twig テンプレートからヘルパー、エレメント、テーマを使えるようにします。
NOTE
CakePHP 5.x では、代わりに公式の cakephp/twig-view パッケージを使ってください。
インストール
Composer でプラグインをインストールします。
composer require pieceofcake2/twig-viewこのプラグインは cakephp-plugin タイプなので、composer/installers によってプラグインディレクトリにインストールされます。 正しい場所にインストールされるよう、アプリケーションの composer.json で installer-paths を設定してください。
| レイアウト | installer-paths |
|---|---|
モダン (config/、src/、templates/、plugins/) | "plugins/{$name}/": ["type:cakephp-plugin"] |
レガシー (app/Config/、app/Plugin/) | "app/Plugin/{$name}/": ["type:cakephp-plugin"] |
config/bootstrap.php (レガシーレイアウトでは app/Config/bootstrap.php) でプラグインを読み込みます。
CakePlugin::load('TwigView');
// or
CakePlugin::loadAll();クイックスタート
src/Controller/AppController.php (レガシーレイアウトでは app/Controller/AppController.php) で ビュークラスを設定します。
class AppController extends Controller
{
public $viewClass = 'TwigView.Twig';
}.twig 拡張子でテンプレートを作成します。たとえば templates/Posts/index.twig (レガシーレイアウトでは app/View/Posts/index.twig) です。
{% for post in posts %}
<h2>{{ post.Post.title }}</h2>
<p>{{ post.Post.body }}</p>
{% endfor %}機能
- CakePHP との統合: ヘルパー、エレメント、テーマをすべて使えます
- カスタムエクステンション: カスタムのフィルターや関数で Twig を拡張できます
- テーマのサポート: CakePHP のテーマ付きビューと互換性があります
- プラグインのサポート:
View/ディレクトリとtemplates/ディレクトリの両方で動作します - プリコンパイル: 本番環境のパフォーマンスのためにテンプレートをコンパイルできます
- PSR-4 名前空間: モダンな PHP のアーキテクチャです
その他のドキュメント
- 関数とフィルターのリファレンス - 使用できる Twig の関数とフィルターの完全な一覧
- ヘルパーの使い方 - Twig テンプレートで CakePHP のヘルパーを使う方法
- 設定 - 高度な設定オプション
- エクステンション - よく使われる Twig エクステンション
例
Twig で書いたレイアウトの例:
Layouts/default.twigLayouts/ajax.twigLayouts/flash.twigLayouts/js/default.twigLayouts/rss/default.twigLayouts/xml/default.twigLayouts/email/html/default.twigLayouts/email/text/default.twig
由来
このパッケージは predominant/TwigView (Packagist では公開されておらず、アップストリームの最終バージョンは v0.6) のメンテナンスされたフォークで、 元の作者は Kjell Bublitz と Graham Weldon です。pieceofcake2 が、 モダンな PHP で動く CakePHP 2 向けにメンテナンスしています。オリジナルからの変更点は CHANGELOG.md で確認できます。
predominant/TwigView 自体は、Kjell Bublitz によるオリジナルの実装である m3nt0r-legacy/cakephp-twig-view をもとにしています。
