[PHP-users 23918] Re: HTML_QuickForm_Controller から Smarty へのForm要素以外の変数の assign

Tadashi Jokagi ml @ elf.no-ip.org
2004年 12月 16日 (木) 02:35:11 JST


      上鍵です.こんにちは.
      そのままのことをやったことないので山勘で恐縮ですが,

ITOH Takashiさんの<20041215105834.3570.itoh @ kanacli.net>から
>class Page_1 extends HTML_QuickForm_Page { function buildFomr(  ){ ..... } }
>class Page_2 extends HTML_QuickForm_Page { function buildFomr(  ){ ..... } }

      間にもう一つ class をかぶせて(ないし Page_[12] でいいんですが)プロ
    パティ追加.

class MyPage extends HTML_QuickForm_Page { var $foo; ... }
class Page_1 extends MyPage { function buildFomr(  ){ ..... } }
#s/buildFomr/buildForm/ですね;-)
    としたら

>// アクションのコンポーネントを作る
>class Action_1 extends HTML_QuickForm_Action { function perform( &$page, 
>$actionName ){ ..... } } 
>class Action_2 extends HTML_QuickForm_Action { function perform( &$page, 
>$actionName ){ ..... } } 

    perform()メソッドの $page に $page->foo は存在しないでしょうか?
    上鍵は HTML_QuickForm_Action_Display 関係でならそういう処理をいつ
    もやってます.

      後この件と関係ないですけど HTML_QuickForm_Controller 自体も一旦
    派生しておくと便利です(まるごとネタですが)

//  MyController.php とする
class MyController extends HTML_QuickForm_Controller {
    function MyController() {
        //  通常のHTML_QuickForm_Controllerの初期化コードを書く
        //  ただし run() しない
    }
    function purgeSession() {
        $this->container( TRUE);
    }
}

    とかしておくと

$ctrl =& new MyController;
$ctrl->run();

    で HTML_QuickForm_Controller が通常通り使える(コレは大して便利でも
    ない)のと,セッション情報のパージが何処のページに居ても

<?php

require_once "MyController.php";

$ctrl =& new MyController;
$ctrl->purgeSession();
?>

    で出来るので.unset( $_SESSION[...]); でもいいんですが,連想キー
    をいちいち書かないといけないので保守性がよくないかなというところ
    で.関係ないですけどもっといいアイデアとかありましたらいただける
    と参考になるなーとか思います.

-- 
----.----1----.----2----.----3----.----4----.----5----.----6----.----7
Tadashi Jokagi/Setagaya city mailto:elf @ elf.no-ip.org
YokukitanaII http://elf.no-ip.org/
Yokukitawiki http://elf.no-ip.org/wiki/
Yokukitablog http://elf.no-ip.org/blog/


PHP-users メーリングリストの案内