UnsplashのHendrik Cornelissenが撮影した写真
目次
「テンプレートの継承」を使うことでビューをシンプルに管理でき快適に開発を進められます!
公式ページはこれです↓
https://docs.phalcon.io/4.0/en/volt#inheritance
OS:Windows11 Home / WSL(Ubuntu20.04)
php:v7.4.33
phalcon:4.0.6
Phalcon DevTools:v4.2.0
この後に例を使ってテンプレートの継承のやり方をご説明するので、ここでは簡単に使い方をご紹介します。
使い方の手順は以下①~③です。
①親テンプレートファイルを作成する
子テンプレートから値を受取る場所に{% block ~~ %}{% endblock %}を定義する
※親テンプレート内で以下のように書くとデフォルトのコードを記述できます。
{% block ~~ %}デフォルト{% endblock %}
②子テンプレートを作成する
・子テンプレートの1行目に以下を追記する
{% extends “親テンプレートのviews以降のパス” %}
・親テンプレート中の{% block ~~ %}{% endblock %}に埋め込むHTMLを記述する
③「views/index.phtml」を削除する
それでは、実際にテンプレートの継承を使ってみます。
以下の場所に「templates」と「base.volt」を作成します。
/app/views/templates/base.volt
作成したらbase.voltに以下を記述します。
<html>
<head>
<title>{% block title %}TOP{% endblock %} - My Webpage</title>
</head>
<body>
<h2>base.voltに記述したh2</h2>
{% block content1 %}{% endblock %}
{% block content2 %}<p>デフォルト</p>{% endblock %}
</body>
</html>
子テンプレートからコードを受け取りたい箇所に{% block 任意の文字列 %}{% endblock %}を記述しておきます。
子テンプレートには「/app/views/index/index.phtml」の拡張子を変え「/app/views/index/index.volt」を使おうと思います。
index.voltを以下のように編集してください。
{% extends "templates/base.volt" %} ⇐親テンプレートの指定
{% block title %}Index{% endblock %} ⇐親に渡す値の指定
{% block content1 %} ⇐親に渡す値の指定
<h2>index.voltに記述したh2</h2>
{% endblock %}
親テンプレートに渡したいコードを{% block ~~ %}{% endblock %}で囲みます。
「views/index.phtml」はvoltで作成した親テンプレートより優先されてしまうので、削除します。
この例のようにコードを書くと以下のようなHTMLが生成されます。
<html>
<head>
<title>Index - My Webpage</title>
</head>
<body>
<h2>base.voltに記述したh2</h2>
<h2>index.voltに記述したh2</h2>
<p>デフォルト</p>
</body>
</html>
テンプレートの継承の使い方は以上です。