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>

