此刻,我们已经使用控制器逻辑操作过一条模型记录,并且向该记录请求了一个表单对象。现在我们要在视图中显示这个表单对象。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>