Form Helpers

Form Helpers

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) ?>

Form Tag Helpers

在这个部分, 我们看一下这些功能正规的用来创建表单。有三种方法可以用来写表单代码。一个表单可能只用其中一个,也可能结合起来用:

  1. No helper 当创建一个表单,是可以不用akelos form helpers还书写HTML/PHP代码的。这些对于不使用akelos的PHP程序员来说是非常熟悉的。我们在第一个例子用了这种方式。
  2. Stand Alone HelperAkelos独一无二的Helper的命名的原因是,这种类型不是参照表单的声明.引用的controller object是被这种类型的helper制作的。他们被使用的时候可能不用Akelos form declaration或者使用Helper form declaration。如果使用了Helper form declaration,被提到的对象和使用表单声明的对象有着很大的不同。
  3. Form Tag Helper 这个设计的给出是因为这个类型必须在form_forend_form_tag之间编码。

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
 
forms_cn.txt · Last modified: 2008/08/04 09:59 by liyh