【Drupal】Twigテンプレートをデバッグする
はじめに
前回の記事で、デバッグモードを有効にする方法をいくつかお伝えしました。その中で、Twigテンプレートについても触れましたが、あくまで使用しているテンプレートや変数等の内容の表示をするのみでした。
今回はPHPコード同様に、Twigテンプレートに埋め込んだロジックを今回はPHPSTORMなどのIDEでデバッグする方法について記事にしました。
前提条件、環境情報
- xdebugを使用してPHPのデバッグができること
- Composer が使用可能であること
- Drushが使用可能であること
- 仮想環境:landoがインストールされていること
手順
■twigのデバッグを有効化する。
- 以下のファイルを編集する
/sites/development.services.yml
- 以下の設定を追加する。※本番環境では有効にしないこと
parameters:
twig.config:
debug: true
auto_reload: true
■twig_xdebugのインストール & 有効化する
- ターミナルでDrupal Rootに移動する。
以下のComposerコマンドで
twig_xdebug
をインストールする。- 開発にしか使われないモジュールなので
--dev
オプションをつけている。
composer require --dev drupal/twig_xdebug
- 開発にしか使われないモジュールなので
- 以下のコマンドで、
twig_xdebug
を有効化する。lando drush en -y twig_xdebug
- Drupalのキャッシュをリビルドする。
drush cr
Twig Xdebug
https://www.drupal.org/project/twig_xdebug
TWIG_XDEBUGのモジュールのインストールで失敗する場合は、PHP-GDやEXT-CURLがインストールされているか確認してください。
インストールができておらず失敗している場合は、以下の情報を参考にインストールしてください。
https://www.itsolutionstuff.com/post/how-to-install-php-gd-extension-in-ubuntuexample.html
https://websolutionstuff.com/post/require-ext-curl-is-missing-from-your-system-ubuntu
■「{{ breakpoint() }}」をtwigファイルに書いてxdebugでデバッグする。
- デバッグしたいTwigに以下のコードを記述する。
{{ breakpoint() }}
この例では、デバッグ対象のテンプレートのコードの先頭に記載しました
デバッグを開始すると、対象のテンプレートをコンパイルされたファイルを一行ごとにステップ実行できるようになります。
コンパイルされたファイルには、コメントでテンプレートファイルの行数が表示されているため、必要に応じてテンプレートファイルを参照しながらデバッグできます。
さいごに
如何だったでしょうか。Twigテンプレートファイルをデバッグできるようになると、便利です。
これまでちまちまと変数を表示しながらしていたテンプレートのデバッグやカスタマイズ作業が、XDEBUGとこのモジュールを利用するれば、その作業にかかる時間を大幅に短縮することができます。
あなたの環境にもぜひインストールして活用してみてください。
参考
- Debugging Twig templates
https://www.drupal.org/node/1906392 - Twig Xdebug
https://www.drupal.org/project/twig_xdebug - How to Install PHP GD Extension in Ubuntu?
https://www.itsolutionstuff.com/post/how-to-install-php-gd-extension-in-ubuntuexample.html - Require ext-curl is missing from your system ubuntu
https://websolutionstuff.com/post/require-ext-curl-is-missing-from-your-system-ubuntu - Working With Twig Templates
https://www.drupal.org/docs/develop/theming-drupal/twig-in-drupal/working-with-twig-templates
この記事に関するご質問やご意見などございましたらお問い合わせフォームからお気軽にご連絡ください。