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: 2011/04/22 16:46 by bermi
 

The Akelos Framework was created by Bermi Ferrer and other contributors.
Potions of the code and documentation have been ported from Ruby on Rails.

The Akelos Framework is released under the LGPL license.

"Akelos", "Akelos Framework", and the Akelos logo are trademarks of Bermi Labs All rights reserved.

Wiki driven by DokuWiki