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

ISIGE, Akira xia @ silvia.com
2004年 8月 27日 (金) 17:27:58 JST


いしげ です.

こちらも気になったのでその後少し調査してみました.

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

>  先ほどの再現ソースのうち、buildForm()をちょっといじって
(snip)
> のようにテキストボックスを加えたところ、GET、POST双方ともテキストボック
> スにはsetDefaults()が効いています。
(snip)
> というのはちょっと?という気がするのですが。つまり、checkbox以外の部品に
> はPOSTでもsetDefaults()のものを使用しているので。

テキストボックスとチェックボックスでは,
setDefaults() による値を使用する条件が異なるようです.

/usr/share/pear/HTML/QuickForm/checkbox.php の onQuickFormEvent() で
'updateValue' のところをご覧ください.
_defaultValues を findValue() するのは _submitValues が空の時ですが,
この _submitValues は先のメールの post/get の条件により空だったり
そうでなかったりします.

で,同じ場所の element.php を見ると,
こちらでは単純に _submitValues に値がなければすぐ _defaultValues を
使用します.
_submitValues が完全に空である状態と,空ではないが目的の値がない状態は,
こちらでは区別されていません.


これとは別の確認方法で,$page->run() の直前で print_r($page); など
やってみると,$pages->_pages[ 'TEST' ]->_submitFiles が
get の場合と post の場合で異なることが確認できます.

あるいはもっと強引に,$page =& new ... の前に
> $_POST = $_GET = $_REQUEST;
とか入れると,どちらも同じ動作になります(期待してない方の動作ですが).


--
ISIGE, Akira



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