FAQ

FAQ -- よくある質問への回答

説明

この文書は、PEAR general メーリングリスト やその他のメーリングリスト・掲示板に投稿された質問をもとにして作成されています。

HTML_QuickForm_Renderer_Tableless FAQ

1. 要素テンプレートの div タグが壊れています。 最後のクォートが抜けているようです。修正してもらえますか?
2. フォームの hidden 要素が div タグの内部に配置され、スタイル display: none が指定されている理由は?
3. Windows の Internet Explorer 7 で、フォームのレイアウトが崩れます。 どうしたらいいでしょう?
4. Firefox 1.x で、フォームのレイアウトが崩れます。 どうしたらいいでしょう?
5. このレンダラで、フォーム要素に続いてその説明を追加するにはどうしたらいいでしょう?
6. レイアウトがうまくいきません。フォームやその他のコンテンツが変な位置にきてしまいます。 どうしたらいいでしょう?
7. このレンダラを HTML_QuickForm_Controller で使用しましたが、まだテーブルが残っているようです。 何かまずいことでもしてしまったのでしょうか?

1. 要素テンプレートの div タグが壊れています。 最後のクォートが抜けているようです。修正してもらえますか?

いいえ。抜けてしまっているわけではありませんし、 要素テンプレートを修正する必要もありません。

HTML_QuickForm_Renderer_Tableless を使用するには、HTML_QuickForm >= 3.2.6 がインストールされていなければなりません。 それ以前のバージョンでは要素テンプレートが正常に動作せず、 ふたつのエラーブロックがあらわれてしまいます。

PEAR インストーラを使用すると、将来このような問題が発生することを防げます。 インストーラが、パッケージ間の依存性をきちんと考慮してくれるからです。

2. フォームの hidden 要素が div タグの内部に配置され、スタイル display: none が指定されている理由は?

確かに不思議に感じるかもしれません。というのも、hidden 要素はもともと明らかに非表示のはずだからです。 このようにしている理由は、妥当な XHTML を作成するためです。

XHTML では、input 要素はブロック要素の内部でしか記述できません。 form はブロック要素ではありませんが div はブロック要素です。 そこで、このような記述をすることで、妥当な XHTML にしているのです。

3. Windows の Internet Explorer 7 で、フォームのレイアウトが崩れます。 どうしたらいいでしょう?

リリース 0.4.3 で、この問題が修正されています。 スタイルシートの "form fieldset li" ブロックから、 スタイル "height: 1px;" を削除しました。

警告: この変更により、Firefox 1.x との互換性が失われます (Firefox 2.0 は期待通りに動作します)。 この次の質問に、Firefox 1.x との互換性問題の解決方法があります。

4. 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;" を追加すればいいのです。

5. このレンダラで、フォーム要素に続いてその説明を追加するにはどうしたらいいでしょう?

6. レイアウトがうまくいきません。フォームやその他のコンテンツが変な位置にきてしまいます。 どうしたらいいでしょう?

たいていの原因は、fieldset のスタイルシートです。 二通りの対応方法があります。

まずは、

overflow: hidden;

"form fieldset" ブロックに追加することです。

これで問題が解決しなかった場合は、以下のふたつのスタイルを "form fieldset" ブロックから削除します。

clear: both;
float: left;

7. このレンダラを HTML_QuickForm_Controller で使用しましたが、まだテーブルが残っているようです。 何かまずいことでもしてしまったのでしょうか?

HTML_QuickForm_Controller に対して、 別のレンダラを使用することを教えてやる必要があります。 簡単なチュートリアルがここにあります。Using the tableless renderer together with HTML_QuickForm_Controller