kazpgmの日記

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

TOOL更新_ver0.1の「使用できる項目管理」を今作っているver0.1Zdに置き換えた。

TOOL更新_ver0.1の「使用できる項目管理」を今作っているver0.1Zdに置き換えた。
これで管理者側の自動生成◎自動作成するのに必要な機能は全部動いたことになる。(<=と思ったら「初期データアップロード管理」も置き換えないといけないことに気づいた。。。。)「ログイン情報管理」になかったものは、ファイルアップロード、ファイルダウンロード、パスワード自動作成、シーケンス番号先取り、など。その過程でダメな点が出たりしたのでいろいろ修正した。・・・この先ユーザ側(登録時の確認画面がある。登録時管理者と顧客にメールを出す。基本プログラムが2つに分けてある。などが違う)も同じように作って。・・・それを元に雛型を作り。・・・ver0.1Zdをつくるのだ。・・・(省略)。

■AppSmartyPlugin.php 修正
内容:ラジオボタン、プルダウンリストともに「デフォルト設定(英字)」を設定できるようにした。・・・こんな感じで$paramsに追加できるので便利。

function smarty_function_kaz_html_radio($params, &$smarty) と
function smarty_function_kaz_html_select($params, &$smarty) の
2メソッドともに

<<追加>>
 *           - dfltEng    デフォルト設定(英字)。設定しない場合""を指定する。
・・・
    if( isset($params['dfltEng']) == false){
        $params['dfltEng'] = ''; // デフォルト英字指定なし
    }

<<変更前>>
$params['dflt']
<<変更後>>
$params['idx']=='0'?$params['dflt']:$params['dfltEng']

■ControllerAdminBase.php 修正
内容:
   ・「一番最初のソートタイプ(A:ASC D:DESC)」を"A"固定でPGMしてたのを”A”,”D”選べるようにした。
   ・「viewに使用する名前」のメソッド名が勘違いされるのでわかりやすく変えた。
   ・登録時に、PK先取りや、パスワード先取りするメソッドを入れた。
   ・アップロード時にエラーになったとき。もとの名前に戻すメソッドを入れた。

<<追加:ControllerDbBase.phpから移動してきた>>
    protected $_mode = '';             // モード
    protected $_modeBk = '';           // モードバックアップ
    protected $_fstSrtItem = '';       // 一番最初のソートITEM名

<<追加>>
    protected $_fstSrtType = '';       // 一番最初のソートタイプ(A:ASC D:DESC)

<<追加>>
    // 一番最初のソートタイプ(A:ASC D:DESC)を取得する
    // 例 return 'A';
    abstract protected function _getFstSrtType();

<<修正前>>
    // viewに使用するテーブル名
    // 例 return 'logininfo';
    abstract protected function _getTblName();

    // viewに使用するフォルダ名
    // 例 return 'admin/logininfo';
    abstract protected function _getFolderName();
<<修正後>>
    // viewに使用する名前(先頭の共通部分)
    // 例 return 'logininfo';
    abstract protected function _getViewHeadName();

    // viewに使用するフォルダ名
    // 例 return 'admin/logininfo';
    abstract protected function _getViewFolderName();

<<修正前:4箇所あり>>
$this->_o['sort_order'] = 'A';
<<修正後>>
$this->_o['sort_order'] = $this->_fstSrtType;

<<修正前:8箇所あり>>
$this->_getFolderName()
<<修正後>>
$this->_getViewFolderName()

<<修正前:4箇所あり>>
$this->_getTblName
<<修正後>>
$this->_getViewHeadName()

<<修正前>>
    // 登録
    protected function _insActionSub() { 
・・・
    }
<<修正後>>
    // 登録
    protected function _insActionSub() { 
・・・
        // 登録時に、PK先取りや、パスワード先取り処理
        $this->_insActionSubSeqPass();
    }

<<追加>>
    // 登録時に、PK先取りや、パスワード先取り処理
    // 登録時に、PK先取りや、パスワード先取りするときは、継承先でオーバーライドしてください。
    protected function _insActionSubSeqPass() 
    {
        // 登録時に、PK先取りや、パスワード先取りがあるとき処理を入れる。
    }

   ☆使用例:継承先のコーディング
    // 登録時に、PK先取りや、パスワード先取り処理
    // 登録時に、PK先取りや、パスワード先取りするときは、継承先でオーバーライドしてください。
    protected function _insActionSubSeqPass() 
    {
        // 登録時に、PK先取りや、パスワード先取りがあるとき処理を入れる。
        if ($this->_modeBk == 'ins') {
            $this->_o['item09'] = AppDbFunctions::makePassword($this->_db, 8, 't_item', 'item09');
        }
    }

<<修正前>>
    // 変更
    protected function _updActionSub() { 
        switch($this->_mode) {
            case 'upd':    // 変更
                break;
            case 'upd_do': // 変更の実行
                $this->_err = $this->_validCheck($this->_o, $this->_mode);
                if(AppCheckUtil::chkError($this->_err)) { // エラーあり
                    // 入力フォームを表示するmodeにする
                    $this->_mode = 'upd';
                }
                break;
        }
<<修正後>>
    // 変更
    protected function _updActionSub() { 
        switch($this->_mode) {
            case 'upd':    // 変更
                break;
            case 'upd_do': // 変更の実行
                $this->_err = $this->_validCheck($this->_o, $this->_mode);
                if(AppCheckUtil::chkError($this->_err)) { // エラーあり
                    // 入力フォームを表示するmodeにする
                    $this->_mode = 'upd';
                    // 更新エラー時に名前を戻す処理
                    $this->_updActionSubPhoto();
                }
                break;
        }

<<追加>>
    // 更新エラー時に名前を戻す処理
    // アップロード処理のとき、継承先でオーバーライドしてください。
    protected function _updActionSubPhoto() 
    {
        // アップロードがあるとき処理を入れる。
    }

   ☆使用例:継承先のコーディング
    // 更新エラー時に名前を戻す処理
    // アップロード処理のとき、継承先でオーバーライドしてください。
    protected function _updActionSubPhoto() 
    {
        // のアップロードがあるとき処理を入れる。
        $this->_o['item49'] = $this->_o['old_item49'];
        $this->_o['item51'] = $this->_o['old_item51'];
        $this->_o['item50'] = $this->_o['old_item50'];
        $this->_o['item52'] = $this->_o['old_item52'];
    }

■ControllerDbBase.php 修正
内容:ControllerAdminBase.phpに「$_fstSrtItem」のgetterメソッドのabstractがあるのでそちらに移動した。そのほかもControllerAdminBase.phpで使っているのでそちらに移動した。

<<ControllerAdminBase.phpへ移動して、削除する。>>
    protected $_mode = '';             // モード
    protected $_modeBk = '';           // モードバックアップ
    protected $_fstSrtItem = '';       // 一番最初のソートITEM名

■LogininfoAController.php 修正
内容:親クラスで「viewに使用する名前」のメソッド名を変えたので。

<<追加>>
    // 一番最初のソートタイプ(A:ASC D:DESC)を取得する
    protected function _getFstSrtType() 
    {
        return 'A';
    }

<<修正前>>
    // viewに使用するテーブル名
    // 例 return 'logininfo';
    protected function _getTblName() 
    {
        return 'logininfo';
    }

    // viewに使用するフォルダ名
    // 例 return 'logininfo';
    protected function _getFolderName() 
    {
        return 'admin/logininfo';
    }
<<修正後>>
    // viewに使用する名前(先頭の共通部分)
    // 例 return 'logininfo';
    protected function _getViewHeadName() 
    {
        return 'logininfo';
    }

    // viewに使用するフォルダ名
    // 例 return 'logininfo';
    protected function _getViewFolderName() 
    {
        return 'admin/logininfo';
    }

■DbManager.php 修正
内容:画面入力なしの項目がある場合”?”が変換されずに残ってしまう(SQLエラー発生)。修正した。

<<修正前>>
    protected function _sqlAndValQuote(&$sql, &$ary=array()) {
・・・
            if ($sqlValue == "?") { // ”?”の場合
                if (isset($ary[$i])) { // 値がある場合
                    $sqls[$key] = $this->_db->quote($ary[$i]); // 値埋め込む。
                    $i++;
                }
<<修正後>>
    protected function _sqlAndValQuote(&$sql, &$ary=array()) {
・・・
            if ($sqlValue == "?") { // ”?”の場合
                $sqls[$key] = $this->_db->quote($ary[$i]); // 値埋め込む。
                $i++;

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

8/7 13:00-18:00
8/8 13:00-18:00 22:00-04:00
8/9 9:00-12:00 過去の日記を書き換えた。自WEBの「5.次期バージョン開発中 」の更新日も変えた。
■DBマネージャクラス(シングルトン)を作った。(http://d.hatena.ne.jp/kazpgm/20100309/1268152282)に当修正を反映した。
■viewをphp(ver0.1)からsmarty(次期ver)へ置き換えた。(置き換え手法)(http://d.hatena.ne.jp/kazpgm/20100519/1274286130)に当修正を反映した。
■ベースになるサンプルを作成中(http://d.hatena.ne.jp/kazpgm/20100121/1264095498)に当修正を反映した。