この文書は、PEAR general メーリングリスト やその他のメーリングリスト・掲示板に投稿された質問をもとにして作成されています。
div
タグが壊れています。
最後のクォートが抜けているようです。修正してもらえますか?
いいえ。抜けてしまっているわけではありませんし、 要素テンプレートを修正する必要もありません。
HTML_QuickForm_Renderer_Tableless を使用するには、HTML_QuickForm >= 3.2.6 がインストールされていなければなりません。 それ以前のバージョンでは要素テンプレートが正常に動作せず、 ふたつのエラーブロックがあらわれてしまいます。
PEAR インストーラを使用すると、将来このような問題が発生することを防げます。 インストーラが、パッケージ間の依存性をきちんと考慮してくれるからです。
div
タグの内部に配置され、スタイル display: none
が指定されている理由は?
確かに不思議に感じるかもしれません。というのも、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;" を追加すればいいのです。
こちらで説明されています。Howto: Adding explainations next to form fields with Tableless QuickForm renderer
たいていの原因は、fieldset のスタイルシートです。 二通りの対応方法があります。
まずは、
overflow: hidden;
を "form fieldset"
ブロックに追加することです。
これで問題が解決しなかった場合は、以下のふたつのスタイルを
"form fieldset"
ブロックから削除します。
clear: both; float: left;
HTML_QuickForm_Controller に対して、 別のレンダラを使用することを教えてやる必要があります。 簡単なチュートリアルがここにあります。Using the tableless renderer together with HTML_QuickForm_Controller