Category: Ethna
よくよく考えると、この解説をして無いのに 二回も話題にしている件について。
(参考: BoBlog ≫ Ethna: Ethna_ActionForm::freeze())
(参考: BoBlog ≫ Ethna: Ethna_View->helper_action_form)

ということで、謎のキーワードである {form_input}, {form_name} について、解説してみようと思う。
両者とも Ethna 2.1.0-CVSで導入された(はず) の機能で、もともとは、haltさんが開発しているEthna用ライブラリである、Hasteにあった機能です。
また、実装としてはSmartyPluginとして実装されており、テンプレート上から呼び出します。

では、簡単に機能概略を。

{form_name}

これは、フォームの項目名を出力するSmartyPluginです。

一例を挙げるとすると、
class xxx_Form_Hoge extends Ethna_ActionForm {
  var $form = array(
    'hoge' => array(
      'name' => 'ほげほげ',
      'required' => true,
      'filter' => 'numeric_zentohan',
      'form_type' => FORM_TYPE_TEXT,
      'type' => VAR_TYPE_INT,
    ),
  );
}
こんなActionFormが、Actionにひもづいて呼ばれる or Viewのhelper_action_formにセットされているとして、

テンプレート上で、
{form_name name="hoge"} こうすることで、その部分は 「ほげほげ」に置き換わる。これで、テンプレート側の項目名とフォームの定義側によるエラーメッセージとの整合性が取れるようになるというわけだ。
うーん、慣れるまで面倒な気もするけど便利。

{form_input}

こちらは、フォームのinputタグを出力するSmartyPluginです。
上と同じような ActionFormがあるとして、

テンプレート上で、
{form_input name="hoge"} こうすることで、その部分は、
<input type="text" name="hoge" value="" /> このような形になります。

また、value="" の部分は本来 value="{$form.hoge}" の意味で、{$form.hoge}はActionFormの値ですから、ActionClass or ViewClass上で
$value="hello";
$this->af->set('hoge'$value);
してやれば、
<input type="text" name="hoge" value="hello" /> このようになります。

また、maxlength属性をつけたいなぁって思ったあなた、ご安心あれ。
{form_input name="hoge" maxlength="10"} こうしてやれば、
<input type="text" name="hoge" value="" maxlength="10" /> こうなってくれます。なので、classとかidとかonchangeとかつけ放題し放題ですね。

inputは確かに若干面倒なので、これで結構楽になるかなあと思いますよ。

次バージョンの正式リリースが待ち遠しいですね。

追記 at 2006-05-28 22:20
inputタグのname属性が mail になっているのを修正しました。

Posted by BoBpp at 18:04:21 |はてなブックマークに追加

Trackback

Trackback
There are currently no trackbacks for this item.
Use this TrackBack url to ping this item (right-click, copy link target). If your blog does not support Trackbacks you can manually add your trackback by using this form.

Comment

コメントがありません

Add Comment

:

:
: