一畳のくつろぎタイム

このブログでは紹介する商品画像をAmazonアソシエイトより借りています。画像やリンクにはアフィリエイト広告が含まれる事があります

2022年8月9日火曜日

HTML_QuickForm2のドはまり

 PHPのサンプルプログラムを作成しまして、バリデーターのHTML_QuickForm2を使ったのですが、バリデート後の値を取得するメソッド

$form->getValue()

で得られる連想配列が空っぽで値がありません。 ($formがHTML_QuickForm2のインスタンスとして)

$_POSTには値があるのにgetValue()では取得できない。3時間ぐらい調査して原因は1行の書き忘れだった。

 

テンプレートファイル内の記述

<form {$form.attributes}>
{$form.hidden}

$form.hiddenの書き忘れ、この記述はquickformに設定したhidden値を出力するものであるが、QuickForm2自体が利用するhidden値も出力するものだったことを忘れていた。

以下がform.hiddenで出力されるhidden値の例

<input type="hidden" name="_qf_Form" value="">

QuickForm2はこのキー(_qf_Form)の存在をチェックして動作するかしないか決めているようだったため、記述がないとgetValue()メソッドが動作しない。

わかった後に1年ぐらい前の自分のコードを見たら、コメントで_qf_Formの重要性について訴える記述が残っていた・・・コメント読んで同じように時間浪費したことを思い出した。

情報や経験は整理されていないと意味ないなと強く感じる良い経験でした。 

やったことすら覚えていないのでは全く成長がないので3度目は起こらぬよう、ここにメモしてます。