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.     $tag_stack $smarty->_tag_stack;
  25.  
  26.     // 現在の{form_input}を囲むform blockがあればパラメータを取得しておく
  27.     $block_params null;
  28.     for ($i count($tag_stack1$i >= 0--$i{
  29.         if ($tag_stack[$i][0=== 'form'{
  30.             $block_params $tag_stack[$i][1];
  31.             break;
  32.         }
  33.     }
  34.  
  35.     // action
  36.     $action null;
  37.     if (isset($params['action'])) {
  38.         $action $params['action'];
  39.         unset($params['action']);
  40.     else if (isset($block_params['ethna_action'])) {
  41.         $action $block_params['ethna_action'];
  42.     }
  43.     if ($action !== null{
  44.         $view->addActionFormHelper($actiontrue);
  45.     }
  46.  
  47.     // default
  48.     if (isset($params['default'])) {
  49.         // {form_input default=...}が指定されていればそのまま
  50.  
  51.     else if (isset($block_params['default'])) {
  52.         // 外側の {form default=...} ブロック
  53.         if (isset($block_params['default'][$name])) {
  54.             $params['default'$block_params['default'][$name];
  55.         }
  56.     }
  57.  
  58.     // 現在のアクションで受け取ったフォーム値を補正する
  59.     // 補正できるのは、以下の場合のみ
  60.     //
  61.     // 1. {form name=...} の値が設定されていないか、submitされていないとき
  62.     // 2. {form name=...} の値と、submitされたそれが等しいとき
  63.     $af $c->getActionForm();
  64.     $val $af->get($name);
  65.     $form_id $block_params['name'];     // {form name=... }
  66.     $cur_form_id $af->get('ethna_fid')// submitされたフォームID
  67.     $can_fill ($cur_form_id == null
  68.               || $form_id == null
  69.               || $form_id == $cur_form_id);
  70.     if ($can_fill && $val !== null{
  71.         $params['default'$val;
  72.     }
  73.  
  74.     return $view->getFormInput($name$action$params);
  75. }

Documentation generated on Fri, 11 Nov 2011 03:58:09 +0900 by phpDocumentor 1.4.3