Form HelpersAkelos的功能,被设计用来使得制作web的代码更流畅并且更容易读。有时模个会代替HTML/PHP 语句而使用。其他情况下,Helper是单一的语句,这样他将需要书写一些HTML/PHP语句。
一个表单的建立在没有Akelos Form Helpers的情况下可能如下:
<form action="save_person" method="post"> Name: <input type="text" id="person_name" name="person[name]" size="20" value="<?= $person->name ?>" /> Password: <input type="password" id="person_password" name="person[password]" size="20" maxsize="20" value="<?= $person->password ?>" /> Single?: <input type="checkbox" id="person_single" name="person[single]" value="1" /> Description: <textarea cols="20" rows="40" id="person_description" name="person[description]"> <?= $person->description ?> </textarea> <input type="submit" value="Save"> </form>
下面的例子使用了Akelos独一无二的Form Helpers建立表单。$person 对象在controller的action中被指派:
<form action="save_person" method="post"> Name: <?= $form_helper->text_field("person", "name", array("size" => 20)) ?> Password: <?= $form_helper->password_field("person", "password", array("maxsize" => 20)) ?> Single?: <?= $form_helper->check_box("person", "single") ?> Description: <?= $form_helper->text_area("person", "description", array("cols" => 20)) ?> <input type="submit" value="Save" /> </form>
这里的其他特性你可以放入Helpers:
对象名之后紧跟中括号来建立这个object's id的引用。不用Helper,你得这么写
<input type="text" id="person_<?= $person->id ?>_name" name="person[<?= $person->id ?>][name]" value="<?= $person->name ?>" />
你可以用helper这样写:
<?= $form_helper->textfield("person[]", "name") ?>
如果Helper被用来生成重复的一连串相似的表单元素, “index”选现也许会被使用.不用Helper,你得这么写
<input type="text" id="person_1_name" name="person[1][name]" value="<?= $person->name ?>" />
render_collection_of_partials needs to be referenced or documented here.
Helper,使用连接词render_collection_of_partials变成这样
<?= $form_helper->text_field("person", "name", "index" => 1) ?>
在这个部分, 我们看一下这些功能正规的用来创建表单。有三种方法可以用来写表单代码。一个表单可能只用其中一个,也可能结合起来用:
Following is a reference to the form tools. More can be seen about the HTML code at w3schools and other HTML web sites.
| HTML | Helper | Comment |
|---|---|---|
| form | form_for | Wrapper for form fields; defines form |
| fields_for | Wrapper for form fields; does not define form | |
| input type=“text” | text_field | |
| input type=“file” | file_field | Input for a file name with a browse button |
| input type=“hidden” | hidden_field | |
| input type=“password” | password_field | |
| input type=“radio” | radio_button | |
| checkbox | check_box | |
| textarea | text_area | |
| select | select |