[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 メーリングリストの案内