[PHP-users 23118]Re: HTML_QuickFormControllerのcheckboxの不審な挙動?

ISIGE, Akira xia @ silvia.com
2004年 8月 27日 (金) 16:25:54 JST


いしげ です.

On 2004/08/27 16:00:31 JST,
cxn03651 @ msj.biglobe.ne.jp wrote:

>  PEARのHTML_QuickFormControllerでチェックボックスのあるフォームを表示す
> るときに、呼び出し側メソッドがGETとPOSTで挙動が異なるようなのです。
> 
>  末尾に私のところでの再現ソースを載せますが、QFCcheckbox.phpで
> setDefaults()でチェック状態を規定値としている時に、
>  GET で呼び出し・・・チェックされている(正常)
>  POSTで呼び出し・・・チェックされない(???)
> となってしまうのです。

HTML_QuickForm_Page のデフォルトの $method が
'post' だからではないでしょうか.


まず,前提として,setDefaults() で設定した値は,
外部からの入力がない時に使用されます.

で,checkboxForm クラスで継承している HTML_QuickForm_Page クラスは,
コンストラクタを override していないので,デフォルト引数でコールされます.
すると,HTML_QuickForm_Page (HTML_QuickForm を継承している)の引数は,
デフォルトでは $method = 'post' になります.

ここで,上記の挙動ですが,

GET  …… post で値を渡されていないので setDefaults() のものを使用
POST …… post で渡された値を使用(値 "test" は渡されないので null)

つまりどちらも仕様通りの動作をしていると思われます.


試しに手元で checkboxForm クラスに以下のようなコンストラクタを作ったら,
逆の動作になりました.上記の推測を裏付ける挙動と思います.
----
 function checkboxForm()
 {
    parent::HTML_QuickForm_Page(null, 'get');
 }
----


ソースの読みが甘いので外してたらゴメンナサイ.


--
ISIGE, Akira



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