Ethna でフォーム定義の値を取ってくる

Ethna で下記のようなフォーム定義を使えば

'pref' => array(
       'type' => VAR_TYPE_INT,
       'form_type' => FORM_TYPE_SELECT,
       'name'  => '出身地',
       'required' => 'true',
       'option' => array(
            '01' => '北海道', '02' => '青森県', '03' => '岩手県', '04' => '宮城県', '05' => '秋田県',
            '06' => '山形県', '07' => '福島県', '08' => '茨城県', '09' => '栃木県', '10' => '群馬県',
            '11' => '埼玉県', '12' => '千葉県', '13' => '東京都', '14' => '神奈川県', '15' => '新潟県',
            '16' => '富山県', '17' => '石川県', '18' => '福井県', '19' => '山梨県', '20' => '長野県',
            '21' => '岐阜県', '22' => '静岡県', '23' => '愛知県', '24' => '三重県', '25' => '滋賀県',
            '26' => '京都府', '27' => '大阪府', '28' => '兵庫県', '29' => '奈良県', '30' => '和歌山県',
            '31' => '鳥取県', '32' => '島根県', '33' => '岡山県', '34' => '広島県', '35' => '山口県',
            '36' => '徳島県', '37' => '香川県', '38' => '愛媛県', '39' => '高知県', '40' => '福岡県',
            '41' => '佐賀県', '42' => '長崎県', '43' => '熊本県', '44' => '大分県', '45' => '宮崎県',
            '46' => '鹿児島県', '47' => '沖縄県',
       ),
)

テンプレートではフォームヘルパを利用して

{form_input name=”pref”}

と書くだけで都道府県を選択する確認ダイアログが作れる。
ただ、この次の確認画面で

{$form.pref}

とだけ書いた場合に、意味の無い値が表示されてしまう。

こういう場合は、View でフォーム定義を取得して setApp しておく。

$pref_def = $this->af->getDef(‘pref’);
$this->af->setApp(‘pref’, $pref_def['option']);

すると、template では

{$app.pref[$form.pref]}

として、都道府県名のラベルと値を紐付ける事ができる。やったね!


普通にフォーム定義で上記定義使ってる画面はこれでいいけど、フォーム定義なしで、単にDBから取ってきただけの値から都道府県名を表示したい時はどうするんだろう。

プロジェクトの ActionForm ベースクラスで form_template に代入する形で冒頭のコードようなフォーム定義が行なわれていたら

$this->af->form_template['pref'];

とする事で、上記の getDef で取ってきたもの相当は取れるからこれを使えばいいのかな。
プロパティだから、2行に分けなくても

$this->af->setApp($this->af->form_template['pref']['option']);

みたいに書けるし。

preload preload preload