開発情報・ナレッジ

投稿者: SPIRERS ナレッジ向上チーム 2026年8月14日 (金)

【Thymeleafを使いこなそう】第3回 PHP スパイラルの独自関数の解説

Thymeleaf(タイムリーフ)はPHPと組み合わせることで、より幅広いカスタマイズが可能となります。
本記事ではSPIRALが用意しているPHPの独自関数について解説いたします。
Thymeleafの記法や動作についてはSPIRAL ver.2 サポートサイト Thymeleaf記法をご参照ください。
また、Thymeleaf関連記事をまとめた Thymeleaf特集 も是非ご覧ください。
関連記事はこちら

出力について

PHPの実行結果をThymeleafで判別するためには、PHPの値をThymeleafに渡す必要があります。
しかしその際、Thymeleafに記載ミスがあると500エラーが発生いたします。

500エラーの発生条件等については、500エラー発生ケース まとめをご確認ください。
Thymeleafにどのような値が渡っているか、PHPの処理が成功しているかに関しては、下記のコードで纏めて出力できますので、確認する際にはお試しください。
※確認やデバック用としてご使用ください。
PHPからThymeleafへ受け渡している値の全出力コード
<!-- Thymeleafのコード -->
<span th:text="${cp.result}"></span>

setTHValue($key,$value),setTHValues($array)

PHP実行結果をThymeleafにセットします。
【setTHValue】には主に「固定の値」「変数」「配列」「連想配列」をセットすることが可能です。
【setTHValues】には「連想配列」のみセットすることが可能です。
【setTHValue】「固定の値」・「変数」
▼【setTHValue】「固定の値」・「変数」をセット:PHPコード
<?php
// PHPの値宣言
$valueA = "変数のテキスト";

// PHPの値セット
$SPIRAL->setTHValue("value","固定のテキスト");
$SPIRAL->setTHValue("valueA",$valueA);
▼【setTHValue】「固定の値」・「変数」を出力:Thymeleafのコード
<p th:text="${cp.result.value['value']}"></p>
<p th:text="${cp.result.value['valueA']}"></p>
▼画面出力
<p>固定のテキスト</p>
<p>変数のテキスト</p>
【setTHValue】「配列」「連想配列」
▼【setTHValue】「配列」「連想配列」をセット:PHPコード
<?php
// PHPの値宣言
$arrayA = ['red', 'blue', 'yellow'];

$arrayB = array(
    "value1" => "head",
    "value2" => "body",
    "value3" => "foot",
);

$arrayC = array("items" =>array(
    array(
        "value1" => "head",
        "value2" => "body",
        "value3" => "foot",
    ),
    array(
        "value1" => "ヘッド",
        "value2" => "ボディ",
        "value3" => "フット",
    )
));
// PHPの値セット
$SPIRAL->setTHValue("arrayA",$arrayA);
$SPIRAL->setTHValue("arrayB",$arrayB);
$SPIRAL->setTHValue("arrayC",$arrayC);
▼【setTHValue】「配列」「連想配列」を出力:Thymeleafのコード
<!-- arrayA -->
<th:block th:each="val,status:${cp.result.value[arrayA]}">
    <p th:text="${val}"></p>
</th:block>
<!-- arrayB -->
<th:block th:each="val,status:${cp.result.value[arrayB]}">
    <p th:text="${val.key}"></p>
    <p th:text="${val.value}"></p>
</th:block>
<!-- arrayC -->
<th:block th:each="val,status:${cp.result.value[arrayC]['items']}">
    <p th:text="${val['value1']}"></p>
    <p th:text="${val['value2']}"></p>
    <p th:text="${val['value3']}"></p>
</th:block>
▼画面出力
<!-- arrayA -->
    <p>red</p>
    <p>blue</p>
    <p>yellow</p>
<!-- arrayB -->
    <p>value1</p>
    <p>head</p>
    <p>value2</p>
    <p>body</p>
    <p>value3</p>
    <p>foot</p>
<!-- arrayC -->
    <p>head</p>
    <p>body</p>
    <p>foot</p>
    <p>ヘッド</p>
    <p>ボディ</p>
    <p>フット</p>
【setTHValues】「連想配列」
▼【setTHValues】「連想配列」をセット:PHPコード
<?php
// PHPの値宣言
$arrayB = array(
    "value1" => "head",
    "value2" => "body",
    "value3" => "foot",
);

$arrayC = array("items" =>array(
    array(
        "value1" => "head",
        "value2" => "body",
        "value3" => "foot",
    ),
    array(
        "value1" => "ヘッド",
        "value2" => "ボディ",
        "value3" => "フット",
    )
));
// PHPの値セット
$SPIRAL->setTHValues($arrayB);
$SPIRAL->setTHValues($arrayC);
▼【setTHValues】「連想配列」を出力:Thymeleafのコード
<!-- arrayB -->
<p th:text="${cp.result.value['value1']}"></p>
<p th:text="${cp.result.value['value2']}"></p>
<p th:text="${cp.result.value['value3']}"></p>
<!-- arrayC -->
<th:block th:each="val,status:${cp.result.value['items']}">
    <p th:text="${val['value1']}"></p>
    <p th:text="${val['value2']}"></p>
    <p th:text="${val['value3']}"></p>
</th:block>
▼画面出力
<!-- arrayB -->
    <p>head</p>
    <p>body</p>
    <p>foot</p>
<!-- arrayC -->
    <p>head</p>
    <p>body</p>
    <p>foot</p>
    <p>ヘッド</p>
    <p>ボディ</p>
    <p>フット</p>

getEnvValue($key)

PHP環境変数を呼び出します。
PHP環境変数では、APIキーやAPIエンドポイントURLなど、サイト内で何度も使用する値を登録しておき、
独自クラス「$SPIRAL」を使用して、PHPプログラム内に呼び出すことができます。
テスト環境と本番環境で、値を切り替えることが可能です。
getEnvValue($key)
▼PHPコード
<?php
//APIURL、APIキーを取得
$apiurl = $SPIRAL->getEnvValue("apiurl");
$apikey = $SPIRAL->getEnvValue("apikey");

getAuthRecordByFieldId($fieldId)

認証エリア内のPHPにて、認証レコード値を取得します。
$fieldIdには、値を取得するフィールドのID(1、2など)を指定します。
▼PHPコード
<?php
//認証レコード値を取得
$SPIRAL->getAuthRecordByFieldId("1");

getParam($paramName),getParams($paramName)

getParam($paramName)では、別のページからGETやPOSTで送信されてきた値やクエリパラメータの値を一つ取得します。
同じパラメータ名で送信されてきた場合、1つのみ取得します。
GETとPOSTで同じパラメータ名で送信されてきた場合、POSTで送信されたきた値を優先して取得します。 getParams($paramName)では、別のページから送信されてきた配列やクエリパラメータの配列を取得します。
getParam($paramName)
▼【getParam】値をセット:PHPコード
<?php
// PHPの値宣言
$postValue = $SPIRAL->getParam("postValue");
$getValue = $SPIRAL->getParam("getValue");
// PHPの値セット
$SPIRAL->setTHValue("post",$postValue);
$SPIRAL->setTHValue("get",$getValue);
▼【getParam】POST,GETで値を送信するフォーム+出力:Thymeleafコード
<!-- postで値を送信 -->
<form action="" method="post">
  <input type="text" name="postValue">
  <button type="submit">postSubmit</button>
</form>
<!-- getで値を送信 -->
<form action="" method="get">
  <input type="text" name="getValue">
  <button type="submit">getSubmit</button>
</form>
<!-- 出力 -->
<p th:text="${cp.result.value['post']}"></p>
<p th:text="${cp.result.value['get']}"></p>
getParam($paramName)
▼【getParams】値をセット:PHPコード
<?php
// PHPの値宣言
$postValue = $SPIRAL->getParams("postValue[]");
$getValue = $SPIRAL->getParams("getValue[]");
// PHPの値セット
$SPIRAL->setTHValue("post",$postValue);
$SPIRAL->setTHValue("get",$getValue);
▼【getParams】POST,GETで値を送信するフォーム+出力:Thymeleafコード
<!-- postで値を送信 -->
<form action="" method="post">
  <input type="text" name="postValue[]">
  <input type="text" name="postValue[]">
  <button type="submit">postSubmit</button>
</form>
<!-- getで値を送信 -->
<form action="" method="get">
  <input type="text" name="getValue[]">
  <input type="text" name="getValue[]">
  <button type="submit">getSubmit</button>
</form>
<!-- 出力 -->
<th:block th:each="val,status:${cp.result.value[post]}">
    <p th:text="${val}"></p>
</th:block>
<th:block th:each="val,status:${cp.result.value[get]}">
    <p th:text="${val}"></p>
</th:block>
以下の独自クラス・関数はgetParam・getParamsと同様のコードで使用可能です。
異なる点としては、getParam・getParamsではGET・POSTの値をどちらも取得可能ですが、下記では、GET/POSTの値を取得するものとなります。
Query:ページURLのクエリパラメータ(GETの値)
Post:POSTで送信されてきた値
■getQueryParam($paramName)
■getQueryParams($paramName)
■getPostParam($paramName)
■getPostParams($paramName)

getRecordValue()

登録フォームまたは更新フォームの完了ステップにて、登録または更新した値を取得します。
ステップの取得については、フォームブロックのステップ取得用PHPクラスをご確認ください。
▼登録フォームの完了ステップにて値を取得:PHPコード
<?php
$registForm = $SPIRAL->getRegistrationForm("登録フォーム識別名");
//完了ステップでのみ実行する
if ($registForm->isCompletedStep()) { 
$record = $SPIRAL->getRecordValue(); 
$recordId = $record['item']['_id']; 
$SPIRAL->setTHValue("newRecordId", $recordId); 
}
関連記事はこちら
解決しない場合はこちら コンテンツに関しての
要望はこちら