FormKit(フォームキット):テンプレートメソッド

テンプレートメソッド

メソッド名 解説 サンプル
uc() 大文字にします。
								<?= $user_id->uc(); ?>
								[出力例]
								ABCDEFG
							
lc() 小文字にします。
								<?= $user_id->lc(); ?>
								[出力例]
								abcdefg
							
wrap() 第一引数と第二引数で囲みます。
								<?= $name->wrap('拝啓 ',' 様'); ?>
								[出力例]
								拝啓 山田太郎 様
							
tail() 指定文字を末尾に付けます。
								<?= $name->tail(' 様'); ?>
								[出力例]
								山田太郎 様
							
def() 現在値がなければ引数に指定された値にします。
								<input name="onamae"
									value="<?= $onamae->
										def('さんぷる太郎'); ?>">
							
indent() 行頭に指定の文字を挿入します。複数選択なら、自動で \n で連結してから行います。
								<?= $colors->indent(' ・') ?>
								[出力例]
								 ・赤
								 ・青
								 ・黄
							
mask() 文字列を第一引数の文字でマスクします。第二引数には露わにする個数を指定できます。
								<?= $cardnum->mask('*',4) ?>
								[出力例]
								************1234
							
file_org_name() アップロードファイルのオリジナルファイル名にします。
								<?= $img1->file_org_name() ?>
								[出力例]
								ねこにゃんにゃん.jpg
							
file_tmp_name() アップロードファイルの一時ファイル名にします。
								<?= $img1->file_tmp_name() ?>
								[出力例]
								fk-ainBF8.jpg
							
file_size() アップロードファイルのファイルサイズにします。
								<?= $img1->file_size() ?>
								[出力例]
								123465
							
file_type() アップロードファイルのファイルタイプにします。
								<?= $img1->file_type() ?>
								[出力例]
								image/jpg
							
file_width() アップロードファイルの横幅ピクセル数を出力します。
								<?= $img1->file_width() ?>
								[出力例]
								640
							
file_height() アップロードファイルの高さピクセル数を出力します。
								<?= $img1->file_height() ?>
								[出力例]
								480
							
file_preview() アップロードファイルのプレビューURLを出力します。
								<?= $img1->file_preview() ?>
								[出力例]
								/contact/formkit/index.php?pv=fk-ainBF8.jpg
							
is_image() アップロードファイルが画像なら true を返します。
								<?= $img1->is_image() ? '画像' : '画像以外' ?>
								[出力例]
								画像
							
file_preview_tag() アップロードファイルのプレビュー用タグにします。主に確認画面で使用します。引数には細かい設定を配列で渡せます。

is_link

true でリンクにする(標準 true

is_link_target

true で別ウィンドウのリンクにする(標準 true

is_filename_show

true でファイル名を表示する(標準 true

max_width

画像サムネイルの最大横幅を指定(標準 50px

max_height

画像サムネイルの最大高さを指定(標準 50px

empty_label

未選択時の表示文字列を指定(標準 設定ファイルの$Config['empty_label'])

								<?= $img1->file_preview_tag
									(array('is_link_target'=>false)); ?>
								[出力例]
								<a href="/contact/formkit/check.php?pv=fk-ainBF8.jpg" class="fk-preview-link image-file" target="_blank"><img src="/contact/formkit/check.php?pv=fk-ainBF8.jpg" style="max-width:50px;max-height:50px;" class="fk-preview-image" alt="*"><span class="fk-preview-filename">ねこにゃんにゃん.jpg</span></a>
							
file_control_tag() アップロード済みファイルの情報表示用タグにします。主に入力画面の再表示時に出力されます。
								<?= $img1->file_control_tag(); ?>
								[出力例]
								<div class="fk-file-control"><a href="/contact/formkit/index.php?pv=fk-ainBF8.jpg" class="fk-preview-link image-file" target="_blank"><img src="/contact/formkit/index.php?pv=fk-ainBF8.jpg" style="max-width:50px;max-height:50px;" class="fk-preview-image" alt="*"><span class="fk-preview-filename">ねこにゃんにゃん.jpg</span></a><label class="fk-file-control-delete"><input type="checkbox" name="img1[delete]" class=""></label></div>
							
file_upped() ファイルがアップロードされているかを返します。
								<?= $img1->file_upped() ? 'アップ済み' : '未アップ'; ?>
								[出力例]
								アップ済み
							
int() 整数にします。
								<?= $data->int(); ?>
								[出力例]
								100
							
comma() コンマ付き数値にします。
								<?= $data->comma(); ?>
								[出力例]
								10,000
							
join() 複数値の要素の場合に、指定の文字列で連結します。
								<?= $colors->join('、'); ?>
								[出力例]
								赤、青、黄
							
is_set() 定義済みのデータかどうかを返します。
								<?= $data->is_set() ? '定義済み' : '未定義'; ?>
								[出力例]
								定義済み
							
is_exist() データが存在しているかどうか(データ幅が1以上か)を返します。
								<?= $data->is_exist() ? '存在' : 'ない'; ?>
								[出力例]
								存在
							
checked() 第一引数にマッチする値があれば checked を返します。修正画面などですでに選択されているようにできます。尚、第二引数に true を指定するとその値がデフォルトで選択されます。
								<input type="colors" value="赤"<?= $colors->checked('赤') ?>>
								<input type="colors" value="青"<?= $colors->checked('青') ?>>
								<input type="colors" value="黄"<?= $colors->checked('黄') ?>>
							
selected() 第一引数にマッチする値があれば selected を返します。修正画面などですでに選択されているようにできます。尚、第二引数に true を指定するとその値がデフォルトで選択されます。
								<select name="data">
									<option value="データ1"<?= $data->selected('データ1') ?>></option>
									<option value="データ2"<?= $data->selected('データ2') ?>></option>
									<option value="データ3"<?= $data->selected('データ3') ?>></option>
								</select>
							
error() 該当要素のバリデートエラーメッセージをセットするまたは返します。
								<?php
									$error_message = $data->error();
									$data->error(($error_message.'ご確認下さい。'));
								?>
							
error_tag() エラー表示用タグを出力します。基本的には入力要素の近くに配置するのが分かりやすいです。
								<?= $onamae->error_tag(); ?>
								[出力例]
								<div data-fk-error="onamae" class="fk-error"><span></span></div>
							
marker_tag() マーカー表示用タグを出力します。基本的には入力要素の近くに配置するのが分かりやすいです。
								<?= $onamae->marker_tag(); ?>
								[出力例]
								<span data-fk-marker="onamae" class="fk-marker"></span>
							
link_tag() データをリンクのタグにして返します。
								<?= $url->link_tag(); ?>
								[出力例]
								<a href="http://aa" target="_blank">http://aa</a>
							
auto_link_tag() テキストデータ中にリンク(URL、メールアドレス)があれば自動的にすべてリンクタグで囲みます。引数が true の場合は別ウィンドウへのリンクになります。
								<?= $message->auto_link_tag(true); ?>
								[出力例]
								url is <a href="http://aa" target="_blank">http://aa</a> .
							
mail_link_tag() データをメールリンクのタグにして返します。
								<?= $mail->mail_link_tag('メール'); ?>
								[出力例]
								<a href="mailto:test@test.test">メール</a>
							
empty_label() 空データの時に指定文字を出力する
								<?= $data->empty_label('(未選択)'); ?> // 空なら「(未選択)」と表示する
								<?= $data->empty_label(); ?> // 空ならなにも出力しない。
							

テンプレートメソッド:特殊変数

メソッド名 解説 サンプル値
$__COUNT__ 送信カウント値を出力します。メールテンプレートやCSVの値で使用できます。(設定ファイルで送信カウント設定を有効にしておく必要があります)また、送信時にしか使用できないため、フォームテンプレートに記述しても正常に機能しません。 50
$__DATE__ PHP実行時の日付を出力します。 2017-03-29
$__TIME__ PHP実行時の時間を出力します。 11:48:35
$__DATEJP__ PHP実行時の日付を日本語形式で出力します。 2017年03月29日
$__TIMEJP__ PHP実行時の時間を日本語形式で出力します。 11時48分35秒
$__UA__ ブラウザのユーザーエージェント名を出力します。 Mozilla/5.0 (Windows...
$__IP__ IPアドレスを出力します。 127.0.0.1
$__HOST__ ホスト名を出力します。 host.example.jp

テンプレートメソッドの自作

既存のテンプレートメソッドは、formkit/lib/template-methods/ 内に入っており、ここに自作したPHPファイルを配置することで新たにテンプレートメソッドを追加することが出来ます。以下、サンプルで hoge() というメソッドを作成します。(慣例的に小文字で作成して下さい)また、ここで注意して欲しいのは、引数で入ってくるデータは一度 conv_in() 関数を通す必要があるということです。これはテンプレート文字コードが UTF-8 でない場合に一度UTF-8に変換してから操作する必要があるためです。以下、サンプルを記載しますので、コピペしてご利用下さい。

ファイルの冒頭に必ず namespace FK; を記述して下さい。

namespace FK;

function __hoge($element, $head=null, $tail=null)
{
	if($element->is_exist()) {
		$element->val = conv_in($head) . $element->val . conv_in($tail);
	}
	return $element;
}
			

第一引数で入ってくる $element オブジェクトは要素ごとのオブジェクトです。基本的には $element->val に現在の要素の値が入っているのでそれを操作して書き換えればOKです。その他のメンバー変数は formkit/lib/FormKitElement.php で定義しているので、詳細はこちらを参照していただければと存じます。

これで、フォームテンプレートやメールテンプレートで hoge() が使えるようになります。以下、使用サンプルです。

<?= $onamae->hoge('The','くん') ?>
↓
The 山田太郎 くん
			

テンプレート中で使えるヘルパー関数

要素オブジェクトのメソッドではなく、通常のPHP関数としてよく使いそうなものを用意しましたので是非ご利用下さい。

テンプレート中で使用する際には以下のように必ず頭に \FK\ が付きますが、 config.php 内など冒頭で namespace FK; を宣言しているファイルで使用する場合は \FK\ は必要ありません。(書いてもいいですが)

ヘルパー関数名 解説 サンプル
\FK\marker_tag(要素名) 指定の要素名でマーカータグを返します。$要素名->marker_tag()が使えないときなどの代替えです。
								<?= \FK\marker_tag('mail') ?>
							
\FK\error_tag(要素名) 指定の要素名でエラータグを返します。$要素名->error_tag()が使えないときなどの代替えです。
								<?= \FK\error_tag('mail') ?>
							
\FK\hiddens_tag() FormKitで生成した次の画面へ渡す情報をまとめたinputタグを出力します。必ず各ページの <form> 内に記述して下さい。
								~
								<noscript>JavaScriptを有効にして下さい。</noscript>
								<form action="agree.php" method="post" enctype="multipart/form-data">
									<?= \FK\hiddens_tag() ?>
									<table>
								~
							
\FK\element(要素名) バリデート定義の FUNC() 内で使いたい要素を宣言するときの関数です。
								$Config['validate'] = [
									'list' => [
										'user'   => FUNC(function($me){
											$tall = element('tall');
											if($tall->val >= 200) return true;
											$me->error = 'BAN!';
											return false;
										}),
								~
							
\FK\clean(文字列) 前後の空白や改行を除去して綺麗にします。配列でも再帰的に処理します。
								$new_data = \FK\clean(" あい\nう    "); // →「あいう」
							
\FK\error_page(メッセージ,ステータスコード,詳細情報) formkit/lib/error.php テンプレートを使い、エラーページを出力したのちプログラムをそこで終了します。
								\FK\error_page(
									'ページが見つかりません。',
									404,
									array('情報1','情報2','情報3')
								);
							
\FK\post_only() POST通信以外の場合に、設定していた再入力URLに自動的にジャンプします。
								post_only();
							
\FK\arr2csv(データ,文字エンコード) 指定の文字コードで変数からCSVデータを返す関数です。
								$csv_data = \FK\arr2csv(
									array(
										['データ1','たろう',30],
										['データ2','はなこ',32],
									),
								);
							
\FK\echo_mode(出力モード) 出力モード切替関数です。入力画面では input モード、確認画面では view モードで、要素の値の出力の形を変更しています。それを手動でモード変更できる関数です。一時的に出力モードを変更したい場合などに使用できます。
								\FK\echo_mode('input'); // input出力モードに切り替え
								\FK\echo_mode('view'); // view出力モードに切り替え
								\FK\echo_mode('mail'); // mail出力モードに切り替え
								\FK\echo_mode('csv'); // csv出力モードに切り替え
							
\FK\options_tag(リスト,選択済みにさせたい要素または文字列,デフォルト値) <options>タグを一挙に出力します。第二引数に要素オブジェクト変数を指定すると、現在の値とマッチするものが選択済みになります。
								<select name="year">
									<option value="">---</option>
									<?= \FK\options_tag(range(date('Y'),date('Y')+3), $year, date('Y')) ?>
								</select> 年
								<select name="month">
									<option value="">---</option>
									<?= \FK\options_tag(range(1,12), $month ?>
								</select> 月
								<select name="day">
									<option value="">---</option>
									<?= \FK\options_tag(range(1,31), $day ?>
								</select> 日
							
\FK\pref_options_tag(選択済みにさせたい要素または文字列,デフォルト値) 都道府県名の <option> タグを一挙に出力します。第一引数と第二引数は、上記 \FK\options_tag() 関数の第二引数と第三引数と同じ指定です。
								<select name="pref">
									<?= \FK\pref_options_tag($pref, '宮城県') ?>
								</select>
							
\FK\h(文字列) HTML文字をエスケープをします。
								echo \FK\h('123'); // → &lt;span&gt;123&lt;/span&gt;
							
\FK\n(文字列) 改行コードを消します。
								echo \FK\n("123\n456\n789"); // → 123456789
							
\FK\run_date(フォーマット) スクリプトが実行された時間で date() 関数を実行します。引数は date() と同じものが指定できます。
								echo \FK\run_date('H:i:s'); // → 11:39:56
							
\FK\conv_in(文字列) テンプレートに書いたメソッドの引数データなどを内部文字コード(UTF-8)に変換して使えるようにします。実行モードによって変換元の文字コードが違います。input,viewモード時はフォームテンプレートファイルの文字エンコード設定を、mailモード時はメールテンプレートファイルの文字エンコード設定を元に変換します。主にメソッド自作等で使います。
								$args1 = \FK\conv_in($args1);
							
\FK\conv_out(文字列) input,viewモード時に、フォームテンプレート文字コードに変換します。
								$out = \FK\conv_out($data);
							
\FK\copyright_tag() FormKitのコピーライトを出力します。ライセンスコードを購入・設置していない場合はコピーライトの表示は必須になります。
								<?= \FK\copyright_tag() ?>