kazpgmの日記

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

TOOL更新_viewをsmartyで。の続き。これはボツにしたもの。自分用備忘録

TOOL更新_viewをsmartyで。の続き。
logininfoDetailView.htmlに以下のようなところがある。(英語指定のときは"Management "、日本語指定のときは"ログイン情報管理"と表示する。・・・お助けTOOLは英語の画面、日本語の画面、両方入った画面を作ることができる。これは画面を使う日本にいる英語人用のWEBも自動作成◎自動生成してしまおう。と、考えているから。)

<h1><?=$o['c_elements_idx']=='0'?"":"Management "?>ログイン情報
<?=$o['c_elements_idx']=='0'?"管理":""?></h1>

これをsmartyにおきかえる。、、、、、と、{{if $o.c_elements_idx == "0"}}・・・になるか。とおもったが、雑雑してくるので、ここはsmarty「テンプレート関数プラグイン」を使って、三項演算子っぽいプラグイン関数を新規で作ろう。、、、今日はアイデアだけ。<=5/13 三項演算子っぽいプラグイン関数はできない。みたいなので、この文章も取り消し線いれた。・・・{{if}}でやることにした。{{if}}は使ってみたら使い勝手いい。これなら三項演算子いらない。smarty作った人も演算子はifでやらせようと思っているのだろう。
★==これが動いた。{{if}}でのもの==まあ、普通のやり方なので、動くの当然。

<h1>{{if $o.c_elements_idx == '0'}}{{else}}Management{{/if}}ログイン情報
{{if $o.c_elements_idx == '0'}}管理{{/if}}</h1>

・・・・作ったがボツにしたものを残しておく。
★==ここからが、動かないので、作ったがボツにしたもの==

■common.php 修正 「テンプレート関数プラグイン」の読み込みはうまく行った。

<<追加>>
//Smarty Plugin
require_once('AppSmartyPlugin.php');
$smarty->register_function("clause3ope", "smarty_function_clause3ope");

■AppSmartyPlugin.php 新規 注意:これはボツにしたもの。自分用備忘録です。・・・忘れないために残しておくだけです。動くけど、使うことはないだろう。

<?php
/**
 * AppSmartyPlugin.php
 */
/**
 * -------------------------------------------------------------
 * Type:     function
 * Name:     clause3ope
 * Purpose:  3項演算子を行う。 注意:これはボツにしたもの。自分用備忘録です。
 * -------------------------------------------------------------
 **/
function smarty_function_clause3ope($params, &$smarty)
{
    if( isset($params['arg1']) == false){
        $smarty->trigger_error("clause3ope: missing 'arg1' parameter");
        return;
    }

    if( isset($params['arg2']) == false){
        $smarty->trigger_error("clause3ope: missing 'arg2' parameter");
        return;
    }

    if( isset($params['arg3']) == false){
        $smarty->trigger_error("clause3ope: missing 'arg3' parameter");
        return;
    }

    return $params['arg1'] ? $params['arg2'] : $params['arg3'];
}
?>

■logininfoDetailView.html 修正 「($o.c_elements_idx == '0')」がコンパイルエラーになる。これができないならこのアイデアはボツ。・・・でも{{if}}で十分だった。
「=」をattribute nameだと思うみたいだ。ここでは「==」使えないということ。
『Fatal error: Smarty error: [in view/admin/err/logininfoDetailView.html line 999]: syntax error: invalid attribute name: '=' (Smarty_Compiler.class.php, line 1550) in C:\Tools\XAMPP\xampplite\htdocs\samples\kaz\.php\smarty\Smarty.class.php on line 1093』

<<変更前>>
<h1><?=$o['c_elements_idx']=='0'?"":"Management "?>ログイン情報
<?=$o['c_elements_idx']=='0'?"管理":""?></h1>
<<変更後>>
<h1>{{clause3ope arg1=($o.c_elements_idx == '0') arg2='' arg3='Management '}}ログイン情報
{{clause3ope arg1=($o.c_elements_idx == '0') arg2='管理' arg3=''}}</h1>

★==ここまでが、作ったが、動かないのでボツにしたもの==

 ■サイト:http://kazpgm.ddo.jp/

5/12 22:00-01:00 6:00-7:00 
5/13 21:00-0:00 ボツだったけど、「テンプレート関数プラグイン」の読み込みはうまく行った。この過程で、smartyの「plugins」フォルダの中も調査した。自分で作った「テンプレート関数プラグイン」が動くこともわかった。役立ちそう。自『AppHtmlUtil』を「テンプレート関数プラグイン」にしたらsmartyから使えそう。というアイデアが浮かんだ。smartyの「plugins」フォルダのfunction.html_options.phpなんかを参考にして。・・・smartyのもののほうがよさそうなら『AppHtmlUtil』から乗り換えことも考えよう。
5/15 22:00-22:30 {{clause3ope arg1="`$o.c_elements_idx == '0'`" arg2='' arg3='Management '}}にしてみたが、arg1は解釈されずに"`$o.c_elements_idx == '0'`"が、そのままわたってきた。やっぱりだめみたい。