Zend_Form とそのデフォルトのデコレータを使用してフォームを作成しています。これにより、次の HTML が出力されます。
<dl>
<dt><label for="title">Title</label></dt>
<dd>
<input type="text" name="title" value="some title">
<ul>
<li>Some error message for the title</li>
<li>Some other error message for the title</li>
</ul>
</dd>
<dt><label for="type">Type</label></dt>
<dd>
<select name="type">
<option value="1">Type 1</option>
<option value="2">Type 2</option>
<option value="3">Type 3</option>
</select>
<ul>
<li>Some error message for the type</li>
<li>Some other error message for the type</li>
</ul>
</dd>
<dt><label for="description">Description</label></dt>
<dd>
<textarea name="description" rows="40" cols="100">This is a description of the item</textarea>
<ul>
<li>Some error message for the description</li>
<li>Some other error message for the description</li>
</ul>
</dd>
ラベルが関連する入力ボックスの左側に表示され、順序付けられていないリストのエラーが関連する要素の右側に表示されるように、これをスタイルする必要があります。
古き良き時代 (冗談) では、次のように 3 つの列を持つテーブルを使用して、まさに私が望むものを達成できたはずです。
<table>
<tr>
<th><label for="title">Title</label></th>
<td><input type="text" name="title" value="some title"></td>
<td>
<ul>
<li>Some error message for the title</li>
<li>Some other error message for the title</li>
</ul>
</td>
</tr>
<tr>
<th><label for="type">Type</label>
</th>
<td><select name="type">
<option value="1">Type 1</option>
<option value="2">Type 2</option>
<option value="3">Type 3</option>
</select></td>
<td>
<ul>
<li>Some error message for the type</li>
<li>Some other error message for the type</li>
</ul>
</td>
</tr>
<tr>
<th><label for="description">Description</label></th>
<td><textarea name="description" rows="40" cols="100">This is a description of the item</textarea></td>
<td>
<ul>
<li>Some error message for the description</li>
<li>Some other error message for the description</li>
</ul>
</td>
</tr>
</table>
明らかに、これは私が考慮したいものではありません。主な理由は、列をすべて同じ幅に固定したくないからです。
また、コードの可読性の観点から、提供する必要があるひどいネストされた配列がひどいため、zend フォーム デコレータ アプローチを使用しないようにしています。私の理想的なアプローチは、おそらく、各ラベル、入力、および ul を div で囲み、div で clear:both を使用するようなものです。次に、各ラベル、入力、および ul で float:left を使用できます。
ここで、この質問に対する他のさまざまな回答をテストしています:http://htmledit.squarefree.com/
ただし、他の誰も解決策が実際に機能していないようです。明らかに、IE 7 より前ではありませんが、IE で動作する必要があります。誰かが IE8 でのみ動作するものを考え出すことができれば、それはすぐに問題ないかもしれません。
フォーム要素にカスタム ビュー スクリプトを適用しようとしましたが、選択が原因で他の多くの問題が発生しました。
次の記事によると、dt ではなく、dl の dd 部分に ul 要素を配置することは完全に有効です: http://www.maxdesign.com.au/articles/definition/