此刻,我们已经使用控制器逻辑操作过一条模型记录,并且向该记录请求了一个表单对象。现在我们要在视图中显示这个表单对象。Solar有一整套手动渲染表单的视图辅助类,但是这里我们关心的是如何使用Solar_View_Helper_Form辅助类自动的显示表单,你可以在视图脚本中使用$this->form()来操作该辅助类。
![]() | Note |
|---|---|
|
对于大多数操作, |
显示表单最简单的方法是使用$this->form()->auto()方法。这个方法将使用Solar_Form
,并且为我们自动建立表单元素。我们在博客演示示例中的edit.php视图中已经见过这种操作了。
<?php
echo $this->form() // fluent form helper
->auto($this->form) // auto-build from a Solar_Form object
->addProcess('save') // add a "Save" button
->fetch(); // fetch the xhtml output
![]() | Note |
|---|---|
|
为什么要调用 |
上面仅仅四行代码就为你构建了一个表单,包括CSS的类和ID,这些类和ID建立在表单元素的类型、名称、属性、是否必须、是否非法等基础上。
<form action="/blog/edit/2" method="post" enctype="multipart/form-data">
<dl class="list">
<dt class="blog-status">
<label for="blog-status" class="blog-status">Status</label>
</dt>
<dd class="blog-status">
<select name="blog[status]" id="blog-status" class="input-select blog-status">
<option value="draft" label="draft" selected="selected">draft</option>
<option value="public" label="public">public</option>
</select>
</dd>
<dt class="blog-title require">
<label for="blog-title" class="blog-title require">Title</label>
</dt>
<dd class="blog-title require">
<input type="text" name="blog[title]" value="A Draft Article"
maxlength="63" size="60" id="blog-title" class="input-text
blog-title require"
/>
</dd>
<dt class="blog-body">
<label for="blog-body" class="blog-body">Body</label>
</dt>
<dd class="blog-body">
<textarea name="blog[body]" rows="18" cols="60" id="blog-body"
class="input-textarea blog-body">My, it sure is drafty in here.</textarea>
</dd>
<dt class="process-save">
</dt>
<dd class="process-save">
<input type="submit" name="process" value="Save" id="process-save"
class="input-submit process-save" />
</dd>
</dl>
</form>
![[Note]](images/note.png)

