郵便番号にハイフンを追加して登録する
サイトの郵便番号住所自動補完を使用した場合、フォームの郵便番号フィールドの入力フォーマットは「数字7桁」または「数字3桁-4桁」となります。
「数字7桁」または「数字3桁-4桁」のどちらかに統一してDBに登録したい場合、登録フォームの完了ステップでPHPを使用して登録しなおす方法があります。
下記は、「数字3桁-4桁」に統一して登録するサンプルプログラムです。
ページのPHP
<?php
//SPIRAL Ver2のAPI用のURL
$base_url = "https://api.spiral-platform.com/v1/";
$url = $base_url."apps/{appid}/dbs/{dbid}/records";
//APIキー
$apikey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
//ヘッダ
$header = array(
"Authorization:Bearer ".$apikey,
"Content-Type:application/json",
);
$registForm = $SPIRAL->getRegistrationForm("登録フォーム識別名");
//完了ステップでのみ実行する
if ($registForm->isCompletedStep()) {
$record = $SPIRAL->getRecordValue();
$recordId = $record['item']['_id'];
$zipCode = $record['item']['zipCode'];
//ハイフンなし7桁の郵便番号が登録されている場合に実行する
if (preg_match("/^\d{7}$/",$zipCode)) {
//urlの末尾に変更したいrecordIdを付加
$url = $url ."/". $recordId;
//ボディ
$body = [
//ハイフンなし7桁の郵便番号に「数字3桁-4桁」の形式でハイフンをつける
"zipCode" => substr($zipCode, 0, 3) .'-'. substr($zipCode, -4),
];
//配列をjson形式に変換
$json_body = json_encode($body);
// curlライブラリを使用して送信
//セッションを初期化する
$curl = curl_init();
//実行結果を文字列で取得できるように設定
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//urlを指定
curl_setopt($curl, CURLOPT_URL , $url);
//ヘッダを指定
curl_setopt($curl, CURLOPT_HTTPHEADER , $header);
//ボディを指定
curl_setopt($curl, CURLOPT_POSTFIELDS , $json_body);
//メソッドを指定
curl_setopt($curl, CURLOPT_CUSTOMREQUEST , 'PATCH');
//セッションを実行し、その結果を取得
$response = curl_exec($curl);
//セッションを閉じる
curl_close($curl);
$response_json = json_decode($response, true);
$zipCode = $response_json['item']['zipCode'];
}
//ブロックの登録フォーム完了ソース表示に使用
$SPIRAL->setTHValue("message", "zipCode:". $zipCode);
}
ブロックの登録フォーム完了ソース
<div>
<div th:if="${cp.result.isSuccess}">
<div th:text="${cp.result.value['message']}"></div>
</div>
<div th:if="${!cp.result.isSuccess}">
<div th:text="${cp.result.errorMessage}"></div>
</div>
</div>
※ブロックのソースはテスト表示にのみ使用しますので、実際に使用する際には不要です。
