smarty capture generator
_muili.
PHP/Smartyのcaptureを使って入力系を作る。外部テンプレート不可やDBテーブル定義フィールド名未確定などの場合に使えるかも?
{* before *} <textarea name="memo">{$data.memo|nl2br}</textarea> {html_select_date prefix=date time=$data.date field_order=YMD} {html_radios name=type selected=$data.type options=$types["type"]} <input type="text" name="hoge" value="{$data.hoge|escape}"> {* after *} {$input_memo} {$input_date} {$input_type} {$input_hoge}
ただでさえ、吐き気がするようなテンプレート。
これが帳票システムの入り組んだテーブルに混ざってる訳ですよ。
更にフィールド名が変わったらと思うとね。
時には、元のフィールド名がスペルミスされているので詰まる事も。
調整次第でスペルミスも減るし、何といっても管理が楽。
{* generator $input_keyname *} {* @assign types [ name=(1="a";2="b";..) ] *} {foreach key=name item=value from=data} {capture assign="input_`$key`"} {if preg_match("@(memo|explain|overview)@",$name)} <textarea name="{$name}">{$value|nl2br}</textarea> {elseif preg_match("@(date)@",$name)} {html_select_date prefix=$name time=$value field_order=YMD} {elseif preg_match("@(type)@",$name)} {html_radios name=$name selected=$value options=$types[$name]} {else} <input type="text" name="{$name}" value="{$value|escape}"> {/if} {/capture} {/foreach}
$input_keyname系が使われていないことが前提。競合するなら該当箇所を変える。
foreach-captureでassignに生成。
使用時は、そのassign($input_keynameなるもの)を必要な個所と交換するだけ。