Source for file function.form_input.php

Documentation is available at function.form_input.php

  1. <?php
  2. /**
  3.  *  smarty function:フォームタグ生成
  4.  *
  5.  *  @param  string  $name   フォーム項目名
  6.  */
  7. function smarty_function_form_input($params&$smarty)
  8. {
  9.     // name
  10.     if (isset($params['name'])) {
  11.         $name $params['name'];
  12.         unset($params['name']);
  13.     else {
  14.         return null;
  15.     }
  16.  
  17.     // view object
  18.     $c =Ethna_Controller::getInstance();
  19.     $view =$c->getView();
  20.     if ($view === null{
  21.         return null;
  22.     }
  23.  
  24.     // 現在の{form_input}を囲むform blockがあればパラメータを取得しておく
  25.     $block_params null;
  26.     for ($i count($smarty->_tag_stack)$i >= 0--$i{
  27.         if ($smarty->_tag_stack[$i][0=== 'form'{
  28.             $block_params $smarty->_tag_stack[$i][1];
  29.             break;
  30.         }
  31.     }
  32.  
  33.     // action
  34.     $action null;
  35.     if (isset($params['action'])) {
  36.         $action $params['action'];
  37.         unset($params['action']);
  38.     else if (isset($block_params['ethna_action'])) {
  39.         $action $block_params['ethna_action'];
  40.     }
  41.     if ($action !== null{
  42.         $view->addActionFormHelper($actiontrue);
  43.     }
  44.  
  45.     // default
  46.     if (isset($params['default'])) {
  47.         // {form_input default=...}が指定されていればそのまま
  48.  
  49.     else if (isset($block_params['default'])) {
  50.         // 外側の {form default=...} ブロック
  51.         if (isset($block_params['default'][$name])) {
  52.             $params['default'$block_params['default'][$name];
  53.         }
  54.     }
  55.  
  56.     // 現在のアクションで受け取ったフォーム値を補正する
  57.     // 補正できるのは、以下の場合のみ
  58.     //
  59.     // 1. {form name=...} の値が設定されていないか、submitされていないとき
  60.     // 2. {form name=...} の値と、submitされたそれが等しいとき
  61.     $af =$c->getActionForm();
  62.     $val $af->get($name);
  63.     $form_id $block_params['name'];     // {form name=... }
  64.     $cur_form_id $af->get('ethna_fid')// submitされたフォームID
  65.     $can_fill ($cur_form_id == null
  66.               || $form_id == null
  67.               || $form_id == $cur_form_id);
  68.     if ($can_fill && $val !== null{
  69.         $params['default'$val;
  70.     }
  71.  
  72.     return $view->getFormInput($name$action$params);
  73. }

Documentation generated on Fri, 11 Nov 2011 04:01:14 +0900 by phpDocumentor 1.4.3