Ces helpers sont conçus pour générer des éléments de formulaires en relation avec des objets assignés au template. Voici un exemple (l'objet $this→person ayant été assigné dans une action du controller) :
// on définit un objet dans le controller
$this->person = new Person();
$this->person->name = 'Batman';
$this->person->password = 'secret';
$this->person->single = true;
$this->person->description = 'dark superhero';
// le formulaire ainsi défini
<form action="save_person" method="post">
<label>Name</label>
<?= text_field('person', 'name', $this->person, array('size'=>40)); ?>
<label>Password</label>
<?= password_field('person', 'password', $this->person, array('maxsize'=>20)); ?>
<label>Single ?</label>
<?= check_box('person', 'single', $this->person); ?>
<label>Description</label>
<?= text_area('person', 'description', $this->person, array('cols'=>20)); ?>
<input type="submit" value="Save">
</form>
// génèrera
<form action="save_person" method="post">
<label>Name</label>
<input type="text" name="person[name]" id="person_name" size="40" value="Batman" />
<label>Password</label>
<input type="password" name="person[password]" id="person_password" maxsize="20" value="secret" />
<label>Single ?</label>
<input type="checkbox" name="person[single]" id="person_single" value="0" />
<label>Description</label>
<textarea name="person[description]" id="person_description" cols="20">
dark superhero
</textarea>
<input type="submit" value="Save">
</form>
Si le helper est utilisé pour générer une séquence répétitive d'éléments de formulaires (par exemple dans un partial), l'option index peut s'avérer utile. Par exemple :
<?= text_field('person', 'name', $this->person, array('index' => 1)); ?> // génèrera <input type="text" name="person[1][name]" id="person_1_name" value="..." />