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なるもの)を必要な個所と交換するだけ。