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