kazpgmの日記

『プログラム自動作成@自動生成』作成の日記

TOOL更新_viewをsmartyで。の続き。チェックボックス用のsmartyプラグインを追加した。

TOOL更新_viewをsmartyで。の続き。チェックボックス用のsmartyプラグインを追加した。
1.smartyプラグイン

■AppSmartyPlugin.php 修正
チェックボックス用のsmartyプラグインを追加した。
<<追加>>
/**
 * -------------------------------------------------------------
 * Smarty {kaz_html_checkbox} function plugin
 *
 * Type:     function<br>
 * Name:     kaz_html_checkbox<br>
 * Input:<br>
 *           - elename    コード名称
 *           - indata     入力値
 *           - name       name
 *           - idx        elements_idx ('0':日本語、'1':英語) デフォルト='0'
 *           - su         1行のITEM数
 * Purpose:  AppHtmlUtilからgetHTMLCheckBoxを取得して戻します。
 * @param array
 * @param Smarty
 * @return HTMLCheckBox文字
 * -------------------------------------------------------------
 **/
function smarty_function_kaz_html_checkbox($params, &$smarty)
{
    require_once('AppHtmlUtil.php');
    $elements = AppElements::getInstance();    // コード一覧

    if( isset($params['elename']) == false){
        $smarty->trigger_error("kaz_html_checkbox: missing 'elename' parameter");
        return;
    }
    if( array_key_exists('indata', $params) == false){
        $smarty->trigger_error("kaz_html_checkbox: missing 'indata' parameter");
        return;
    }
    if( isset($params['name']) == false){
        $smarty->trigger_error("kaz_html_checkbox: missing 'name' parameter");
        return;
    }
    if( isset($params['idx']) == false){
        $params['idx'] = '0'; // 日本用
    }
    if( isset($params['su']) == false){
        $params['su'] = 5; // デフォルトは1行に5つ
    }
    if(mb_strwidth($params['elename']) == 0){ // パラメータに値がない場合
        return "";
    }

    return AppHtmlUtil::getHTMLCheckBox($elements->elements[$params['elename']], 
    $params['indata'], $params['name'], $params['idx'], $params['su']);
}


/**
 * -------------------------------------------------------------
 * Smarty {kaz_checkboxdispstr} function plugin
 *
 * Type:     function<br>
 * Name:     kaz_checkboxdispstr<br>
 * Input:<br>
 *           - elename    コード一覧(AppElements)のコード名
 *           - indata     入力値
 *           - idx        elements_idx ('0':日本語、'1':英語) デフォルト='0'
 * Purpose:  指定されたコードのHTMLCheckBoxの文字列のみをエスケープして戻します。
 * @param array
 * @param Smarty
 * @return string
 * -------------------------------------------------------------
 **/
function smarty_function_kaz_checkboxdispstr($params, &$smarty)
{
    $elements = AppElements::getInstance();    // コード一覧

    if( isset($params['elename']) == false){
        $smarty->trigger_error("kaz_checkboxdispstr: missing 'elename' parameter");
        return;
    }
    if( array_key_exists('indata', $params) == false){
        $smarty->trigger_error("kaz_checkboxdispstr: missing 'indata' parameter");
        return;
    }
    if( isset($params['idx']) == false){
        $params['idx'] = '0'; // 日本用
    }
    if(mb_strwidth($params['elename']) == 0){ // パラメータに値がない場合
        $rtn = "";
    }
    return AppHtmlUtil::getHTMLCheckBoxDispStr($elements->elements[$params['elename']],
  $params['indata'], $params['idx']);
}

2.viewでテストした。

■logininfoListView.htmlの「有効フラグ」を使って確認した。
<<確認用に追加>>
 {{kaz_html_checkbox elename='YUKO_FLG' indata=$o.srch_yuko_flg name="srch_yuko_flg" idx=$o.c_elements_idx su=10}}<br>
 {{kaz_checkboxdispstr elename='YUKO_FLG' indata=$o.srch_yuko_flg}}

3.common.php 修正 

smartyプラグインを追加
<<追加>>
$smarty->register_function("kaz_html_checkbox", "smarty_function_kaz_html_checkbox");
$smarty->register_function("kaz_checkboxdispstr", "smarty_function_kaz_checkboxdispstr");

6/15 20:30-23:00 http://d.hatena.ne.jp/kazpgm/20100519/1274286130を『■viewをphp(ver0.1)からsmarty(次期ver)へ置き換えた。(置き換え手法)』をこの内容で書き換えた。これで「AppHtmlUtil」のメソッドは全部smartyプラグインになった。