TwigでPHPコードをHTMLに渡す方法を紹介!Twigのロジックデリミタの使い方とは?

- システム
エンジニア - PHPコードをHTMLに渡す方法はありますか?
- プロジェクト
マネージャー - TwigでPHPコードをHTMLに渡す方法を紹介しますので、参考にしてみてください。
TwigでPHPコードをHTMLに渡す方法を紹介します!
Twigとは、PHPのテンプレートエンジンです。テンプレートエンジンとは、テンプレート(HTML)にプログラムのデータ(PHPコードのデータ)を当てはめるエンジンです。
今回は、TwigでPHPコードをHTMLに渡す方法を紹介します。
ここでは、以下について紹介します。
・インストール
・プリントデリミタ
・コメントデリミタ
・ロジックデリミタ
TwigでPHPコードをHTMLに渡す方法に興味のある方はぜひご覧ください。
インストール
Twigのインストール方法を紹介します。composerコマンドでインストールできます。まずはphpのバージョンを確認します。
1 2 3 4 5 |
$ php -v PHP 7.4.1 (cli) (built: Dec 18 2019 14:44:22) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.1, Copyright (c), by Zend Technologies |
PHP7.2.9以上なので、composerコマンドでTwigの3.0系をインストールします。
1 |
$ composer require twig/twig:~3.0 |
インストールが成功すると、以下のファイルやディレクトリが生成されます。
1 2 3 |
composer.json composer.lock vender |
プリントデリミタ
PHPコードからHTMLにデータを渡す方法を紹介します。
カレントディレクトリにindex.phpを新規作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php // Twigライブラリの読込み require_once './vendor/autoload.php'; // Twigを使用するテンプレートの読込み $loader = new \Twig\Loader\FilesystemLoader('./view'); $twig = new \Twig\Environment($loader); // htmlに渡すデータ $data = array( 'title' => 'MyTitle', 'message' => 'MyMessage', ); // テンプレートのレンダリング echo $twig->render('index.html.twig', $data); ?> |
次に「view」ディレクトリを作成し、その配下にindex.html.twigを新規作成します。
1 2 3 4 5 6 7 8 9 10 11 |
<!DOCTYPE html> <html> <head> <title>{{ title }}</title> </head> <body> <div> <h1>{{ message }}</h1> </div> </body> </html> |
HTML内の{{ }}の部分がTwigのプリントデリミタです。PHPコードからのデータをプリントします。
次に、phpコマンドで実行結果を確認してみます。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ php index.php <!DOCTYPE html> <html> <head> <title>MyTitle</title> </head> <body> <div> <h1>MyMessage</h1> </div> </body> </html> |
PHPコードからのデータがプリントされていることが分かります。
コメントデリミタ
Twigのコメントデリミタの使い方を紹介します。PHPコードは先ほどのままで構いません。
view/index.html.twigを以下のように修正します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<!DOCTYPE html> <html> <head> {# タイトル #} <title>{{ title }}</title> </head> <body> <div> {# メッセージ #} <h1>{{ message }}</h1> </div> </body> </html> |
HTML内の{# #}の部分がTwigのコメントデリミタです。
phpコマンドで実行結果を確認してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ php index.php <!DOCTYPE html> <html> <head> <title>MyTitle</title> </head> <body> <div> <h1>MyMessage</h1> </div> </body> </html> |
コメント部分は出力されていないことが分かります。
ロジックデリミタ
Twigのロジックデリミタの使い方を紹介します。
index.phpを以下のように修正します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php // Twigライブラリの読込み require_once './vendor/autoload.php'; // Twigを使用するテンプレートの読込み $loader = new \Twig\Loader\FilesystemLoader('./view'); $twig = new \Twig\Environment($loader); // htmlに渡すデータ $data = array( 'title' => 'Users', 'message' => 'User List', 'users' => [['name'=>'taro', 'age'=>'20', 'email'=>'taro@gmail.com'], ['name'=>'jiro', 'age'=>'30', 'email'=>'jiro@yahoo.co.jp'], ['name'=>'saburo', 'age'=>'40', 'email'=>'saburo@gmail.com']] ); // テンプレートのレンダリング echo $twig->render('index.html.twig', $data); ?> |
次に、view/index.html.twigを以下のように修正します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<!DOCTYPE html> <html> <head> <title>{{ title }}</title> </head> <body> <div> <h1>{{ message }}</h1> <table border="1"> <tr> <th>name</th> <th>age</th> <th>email</th> </tr> {% for user in users %} <tr> <td>{{ user.name }}</td> <td>{{ user.age }}</td> <td>{{ user.email }}</td> </tr> {% endfor %} </table> </div> </body> </html> |
HTML内の{% %}の部分がTwigのロジックデリミタです。PHPコードでロジックを記述できます。
phpコマンドで実行結果を確認してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
$ php index.php <!DOCTYPE html> <html> <head> <title>Users</title> </head> <body> <div> <h1>User List</h1> <table border="1"> <tr> <th>name</th> <th>age</th> <th>email</th> </tr> <tr> <td>taro</td> <td>20</td> <td>taro@gmail.com</td> </tr> <tr> <td>jiro</td> <td>30</td> <td>jiro@yahoo.co.jp</td> </tr> <tr> <td>saburo</td> <td>40</td> <td>saburo@gmail.com</td> </tr> </table> </div> </body> </html> |
- システム
エンジニア - なるほど!このように使用すればHTMLを渡せるんですね。
- プロジェクト
マネージャー - Twingを使うことでシンプルになりますので、ぜひ試してみてください。
まとめ
いかがでしたでしょうか。TwigでPHPコードをHTMLに渡す方法を紹介しました。Twigを使うことで、シンプルで読みやすいコードになります。
ぜひご自身でPHPコードを書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


新着案件New Job
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅)遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅)病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅)開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅)債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅)PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)