いいえ。抜けてしまっているわけではありませんし、 要素テンプレートを修正する必要もありません。
HTML_QuickForm_Renderer_Tableless を使用するには、HTML_QuickForm >= 3.2.6 がインストールされていなければなりません。 それ以前のバージョンでは要素テンプレートが正常に動作せず、 ふたつのエラーブロックがあらわれてしまいます。
PEAR インストーラを使用すると、将来このような問題が発生することを防げます。 インストーラが、パッケージ間の依存性をきちんと考慮してくれるからです。
確かに不思議に感じるかもしれません。というのも、hidden 要素はもともと明らかに非表示のはずだからです。 このようにしている理由は、妥当な XHTML を作成するためです。
XHTML では、input 要素はブロック要素の内部でしか記述できません。 form はブロック要素ではありませんが div はブロック要素です。 そこで、このような記述をすることで、妥当な XHTML にしているのです。
リリース 0.4.3 で、この問題が修正されています。 スタイルシートの "form fieldset li" ブロックから、 スタイル "height: 1px;" を削除しました。
警告: この変更により、Firefox 1.x との互換性が失われます (Firefox 2.0 は期待通りに動作します)。 この次の質問に、Firefox 1.x との互換性問題の解決方法があります。
スタイルシートの "form fieldset li" ブロックに、スタイル "float: left;" を追加する必要があります。さらに、 以下のふたつのブロックをスタイルシートに追加する必要があります。
* html form fieldset li { float: none; } *+html form fieldset li { float: none; } |
Windows Internet Explorer 7 との互換性を気にしないでいい場合は、 このような CSS のハックは不要です。単に、スタイルシートの "form fieldset li" ブロックに (再び) "height: 1px;" を追加すればいいのです。
たいていの原因は、fieldset のスタイルシートです。 二通りの対応方法があります。
まずは、
overflow: hidden; |
を "form fieldset" ブロックに追加することです。
これで問題が解決しなかった場合は、以下のふたつのスタイルを "form fieldset" ブロックから削除します。
clear: both; float: left; |
HTML_QuickForm_Controller に対して、 別のレンダラを使用することを教えてやる必要があります。 簡単なチュートリアルがここにあります。Using the tableless renderer together with HTML_QuickForm_Controller