Solar_View_Helper_Form辅助类帮助你在变化的结构中装饰元素的输出:
-
默认的
decorateAsDlList()
方法把所有元素放置在<dl>
列表中,其中标记文本在<dt>
标签中,元素的值在<dd>
标签中。 -
decorateAsTable()
方法把所有元素放置在<table>
中。每对标记文本/值在<tr>
标签中,其中,标记文本在<th>
标签中,元素值在<td>
标签中。 -
decorateAsDivs()
方法把所有元素放置在嵌套的<div>
标签中。元素列表作为整体在一个<div>
标签中,每对标记文本/值在另一个<div>
标签中。 -
最后,
decorateAsPlain()
方法移除所有的结构上的装饰标签。
我们要做的就是调用正确的装饰方法,剩下的由表单辅助类来完成。下面是博客演示示例中edit.php
视图的代码片断,我们在文件里添加了一个额外的方法:
<?php
echo $this->form()
->auto($this->form)
->addProcess('save')
->decorateAsDivs() // use <div>s instead of <dl> tags
->fetch();
输出结果是:
<form action="/blog/edit/1" method="post" enctype="multipart/form-data"> <div class="list"> <div class="blog-status"> <label for="blog-status" class="blog-status">Status</label> <select name="blog[status]" id="blog-status" class="input-select blog-status"> <option value="draft" label="draft">draft</option> <option value="public" label="public" selected="selected">public</option> </select> </div> <div class="blog-title require"> <label for="blog-title" class="blog-title require">Title</label> <input type="text" name="blog[title]" value="Public Blog Entry" maxlength="63" size="60" id="blog-title" class="input-text blog-title require" /> </div> <div class="blog-body"> <label for="blog-body" class="blog-body">Body</label> <textarea name="blog[body]" rows="18" cols="60" id="blog-body" class="input-textarea blog-body">First post!</textarea> </div> <div class="process-save"> <input type="submit" name="process" value="Save" id="process-save" class="input-submit process-save" /> </div> </div> </form>