認証エリア内でレコード作成日時をさせるプログラムを作ってみました。
今後のアップデートで標準提供されるかもしれませんが、
現状の打開策として参考になれば。
事前に必要な情報
API を使用する際に必要な、API キー,アプリID,DB ID を取得します。
API キーの取得方法
アプリIDの取得方法
※ 「アプリID(appId)の確認」の箇所記載
DBID は、DBの基本設定で確認できます。
PHP
レコード作成日時をAPIで取得して、Thymeleaf に渡す処理です。
PHP 全体<?php //------------------------------ // 設定値用モジュール //------------------------------ define("API_URL", "https://api.spiral-platform.com/v1/"); define("API_KEY", ""); define("APP_ID", ""); define("DB_ID", ""); // アプリロールで権限設定を反映させたい場合、設定してください。 // API の権限を全権限にしている場合は、設定不要です。 define("API_ROLE", ""); //------------------------------ // 下記から日付の表示形式を選択して、番号を設定してください。 // 1 : 'Y年m月d日 H時i分s秒', // 2 : 'Y/n/d H:i:s', // 3 : 'Y-n-d H:i:s', // 4 : 'Y年m月d日', // 5 : 'Y/m/d', //------------------------------/ $dateType = 1; // 日付の取得に失敗した際の文字を設定してください。 $errorText = "日付の取得に失敗しました。"; // タイムゾーンが違う場合、変更してください。 $timeZone = "Asia/Tokyo"; //------------------------------ //------------------------------ // 以下は変更不要 //------------------------------ // 日付取得処理 //------------------------------ $commonBase = CommonBase::getInstance(); // method : GET(レコード取得) // https://docs.spiral-platform.com/api/#operation/getRecords $data = $commonBase->apiGetSearchCurlAction("apps/".APP_ID."/dbs/".DB_ID."/records/".$SPIRAL->getAuthRecordByFieldId("_id")); if(array_key_exists('status', $data)){ if($data["status"] != 200){ $SPIRAL->setTHValue("createdDate", $errorText); } }else{ $datetime = DateTime::createFromFormat(DateTime::ISO8601,$data["item"]["_createdAt"]); $datetime->setTimezone(new DateTimeZone($timeZone)); $SPIRAL->setTHValue("createdDate", date_format($datetime,$commonBase->dateFormat($dateType))); } //------------------------------ // 共通用モジュール //------------------------------ class CommonBase { /** * シングルトンインスタンス * @var UserManager */ protected static $singleton; public function __construct() { if (self::$singleton) { throw new Exception('must be singleton'); } self::$singleton = $this; } /** * シングルトンインスタンスを返す * @return UserManager */ public static function getInstance() { if (!self::$singleton) { return new CommonBase(); } else { return self::$singleton; } } /** * V2用 GETWhere Add API送信ロジック * @return Result */ function apiGetSearchCurlAction($addUrlPass, $urlParm = null) { $header = array( "Authorization:Bearer " . API_KEY, "X-Spiral-Api-Version: 1.1", "X-Spiral-App-Role: " . API_ROLE, ); // curl // echo API_URL . $addUrlPass . "?" . $urlParm; // echo "<br />"; $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, API_URL . $addUrlPass . "?" . $urlParm); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET"); curl_setopt($curl, CURLOPT_TIMEOUT_MS, 10000); $response = curl_exec($curl); if(json_decode($response)){ return json_decode($response, true); }else{ return; } } /** * 日付の形式 * @param type $string * @return type array */ public function dateFormat($id) { $dateFormat = array( "1" => 'Y年m月d日 H時i分s秒', "2" => 'Y/n/d H:i:s', "3" => 'Y-n-d H:i:s', "4" => 'Y年m月d日', "5" => 'Y/n/d', ); return $dateFormat[$id]; } }
実際に導入してもらう際に修正する箇所は下記になります。
PHP 変更箇所//------------------------------ // 設定値用モジュール //------------------------------ define("API_URL", "https://api.spiral-platform.com/v1/"); define("API_KEY", ""); define("APP_ID", ""); define("DB_ID", ""); // アプリロールで権限設定を反映させたい場合、設定してください。 // API の権限を全権限にしている場合は、設定不要です。 define("API_ROLE", ""); //------------------------------ // 下記から日付の表示形式を選択して、番号を設定してください。 // 1 : 'Y年m月d日 H時i分s秒', // 2 : 'Y/n/d H:i:s', // 3 : 'Y-n-d H:i:s', // 4 : 'Y年m月d日', // 5 : 'Y/m/d', //------------------------------/ $dateType = 1; // 日付の取得に失敗した際の文字を設定してください。 $errorText = "日付の取得に失敗しました。"; // タイムゾーンが違う場合、変更してください。 $timeZone = "Asia/Tokyo";
$dateType の選択によって、表示形式を変更できるような作りになっています。
HTML(Thymeleaf)
PHP より渡された値を下記の形で表示させることができます。
<span th:text="${cp.result.value['createdDate']}">日付</span>
※ Thymeleafでは、下記で値が自動で反映されるため、タグは問いません。
表示させたいタグの中に th:text="${cp.result.value['createdDate']}" をセットしてください。
ソースコードも添付しておきます。
不具合やもっとこうしたほうがいい等あれば、リクエストボードよりご指摘ください。