ゆるふわ技術日誌

エンジニア見習いの悪戦苦闘日記

Twigでyieldっぽいことをする

なぜだかPHPを書いています。こんにちわ。

Twigというテンプレートエンジンを使ってみることにしたのですが、erbでやるyieldっぽいことをしたいなと思って調べてみた。

yieldっぽいとは

いろいろのページで使い回すレイアウト用のテンプレートが以下のようにあったときに

<html>
<head>        
  <title>hoge</title>
</head>
<body>
  <%= yield %>
</body>
</html>

以下のようなHTMLをrenderすると、

<p>Hello world!</p>

テンプレートのyield部分に埋め込んでくれて最終的に以下のようなHTMLを吐き出す機能。

<html>
<head>        
  <title>hoge</title>
</head>
<body>
  <p>Hello world!</p>
</body>
</html>

子が自分自身を親に埋め込むみたいなそんなイメージ。

Twigでやってみる

layout.htmlみたいな名前で(名前はなんでもいい)テンプレートを保存する。以下のような感じ。

<html>
<head>        
  <title>hoge</title>
</head>
<body>
  {% block content %}
  {% endblock %}
</body>
</html>

まぁ要はblockってのを用意してあげればよい。

そういした上でblockの中身となるファイルを用意する。以下のような感じ。

{% extends '/layout.html' %}
{% block content %}
  <p>ようこそ!{{ name }}さん!</p>
{% endblock %}

んで、あとはrenderしてやるだけ。

$twig->render('index.html', ['name' => 'みりん']);

簡単楽チン。

雑談

不本意?に半ば書かされているPHPですが結構面白いです。

そんなことよりフロントエンドの勉強がしたい。