Form helper class. Unless otherwise noted, all generated HTML will be made safe using the HTML::chars method. This prevents against simple XSS attacks that could otherwise be triggered by inserting HTML characters into form fields.
Class declared in SYSPATH/classes/Form.php on line 3.
Creates a button form input. Note that the body of a button is NOT escaped, to allow images and other HTML to be used.
echo Form::button('save', 'Save Profile', ['type' => 'submit']);
string
$name
required - Input name string
$body
required - Input value array
$attributes
= NULL - Html attributes string
public static function button($name, $body, array $attributes = null)
{
// Set the input name
$attributes['name'] = $name;
return '<button' . HTML::attributes($attributes) . '>' . $body . '</button>';
}
Creates a checkbox form input.
echo Form::checkbox('remember_me', 1, (bool) $remember);
string
$name
required - Input name string
$value
= NULL - Input value boolean
$checked
= bool FALSE - Checked status array
$attributes
= NULL - Html attributes string
public static function checkbox($name, $value = null, $checked = false, array $attributes = null)
{
$attributes['type'] = 'checkbox';
if ($checked === true) {
// Make the checkbox active
$attributes[] = 'checked';
}
return Form::input($name, $value, $attributes);
}
Creates the closing form tag.
echo Form::close();
string
public static function close()
{
return '</form>';
}
Creates a file upload form input. No input value can be specified.
echo Form::file('image');
string
$name
required - Input name array
$attributes
= NULL - Html attributes string
public static function file($name, array $attributes = null)
{
$attributes['type'] = 'file';
return Form::input($name, null, $attributes);
}
Creates a hidden form input.
echo Form::hidden('csrf', $token);
string
$name
required - Input name string
$value
= NULL - Input value array
$attributes
= NULL - Html attributes string
public static function hidden($name, $value = null, array $attributes = null)
{
$attributes['type'] = 'hidden';
return Form::input($name, $value, $attributes);
}
Creates a image form input.
echo Form::image(null, null, ['src' => 'media/img/login.png']);
string
$name
required - Input name string
$value
required - Input value array
$attributes
= NULL - Html attributes boolean
$index
= bool FALSE - Add index file to URL? string
public static function image($name, $value, array $attributes = null, $index = false)
{
if (!empty($attributes['src'])) {
if (strpos($attributes['src'], '://') === false) {
// Add the base URL
$attributes['src'] = URL::base($index) . $attributes['src'];
}
}
$attributes['type'] = 'image';
return Form::input($name, $value, $attributes);
}
Creates a form input. If no type is specified, a "text" type input will be returned.
echo Form::input('username', $username);
string
$name
required - Input name string
$value
= NULL - Input value array
$attributes
= NULL - Html attributes string
public static function input($name, $value = null, array $attributes = null)
{
// Set the input name
$attributes['name'] = $name;
// Set the input value
$attributes['value'] = $value;
if (!isset($attributes['type'])) {
// Default type is text
$attributes['type'] = 'text';
}
return '<input' . HTML::attributes($attributes) . ' />';
}
Creates a form label. Label text is not automatically translated.
echo Form::label('username', 'Username');
string
$input
required - Target input string
$text
= NULL - Label text array
$attributes
= NULL - Html attributes string
public static function label($input, $text = null, array $attributes = null)
{
if ($text === null) {
// Use the input name as the text
$text = ucwords(preg_replace('/[\W_]+/', ' ', $input));
}
// Set the label target
$attributes['for'] = $input;
return '<label' . HTML::attributes($attributes) . '>' . $text . '</label>';
}
Generates an opening HTML form tag.
// Form will submit back to the current page using POST
echo Form::open();
// Form will submit to 'search' using GET
echo Form::open('search', ['method' => 'get']);
// When "file" inputs are present, you must include the "enctype"
echo Form::open(null, ['enctype' => 'multipart/form-data']);
mixed
$action
= NULL - Form action, defaults to the current request URI, or [Request] class to use array
$attributes
= NULL - Html attributes string
public static function open($action = null, array $attributes = null)
{
if ($action instanceof Request) {
// Use the current URI
$action = $action->uri();
}
if (!$action) {
// Allow empty form actions (submits back to the current url).
$action = '';
} elseif (strpos($action, '://') === false) {
// Make the URI absolute
$action = URL::site($action);
}
// Add the form action to the attributes
$attributes['action'] = $action;
// Only accept the default character set
$attributes['accept-charset'] = Kohana::$charset;
if (!isset($attributes['method'])) {
// Use POST method
$attributes['method'] = 'post';
}
return '<form' . HTML::attributes($attributes) . '>';
}
Creates a password form input.
echo Form::password('password');
string
$name
required - Input name string
$value
= NULL - Input value array
$attributes
= NULL - Html attributes string
public static function password($name, $value = null, array $attributes = null)
{
$attributes['type'] = 'password';
return Form::input($name, $value, $attributes);
}
Creates a radio form input.
echo Form::radio('like_cats', 1, $cats);
echo Form::radio('like_cats', 0, ! $cats);
string
$name
required - Input name string
$value
= NULL - Input value boolean
$checked
= bool FALSE - Checked status array
$attributes
= NULL - Html attributes string
public static function radio($name, $value = null, $checked = false, array $attributes = null)
{
$attributes['type'] = 'radio';
if ($checked === true) {
// Make the radio active
$attributes[] = 'checked';
}
return Form::input($name, $value, $attributes);
}
Creates a select form input.
echo Form::select('country', $countries, $country);
Support for multiple selected options was added in v3.0.7.
string
$name
required - Input name array
$options
= NULL - Available options mixed
$selected
= NULL - Selected option string, or an array of selected options array
$attributes
= NULL - Html attributes string
public static function select($name, array $options = null, $selected = null, array $attributes = null)
{
// Set the input name
$attributes['name'] = $name;
if (is_array($selected)) {
// This is a multi-select, god save us!
$attributes[] = 'multiple';
}
if (!is_array($selected)) {
if ($selected === null) {
// Use an empty array
$selected = [];
} else {
// Convert the selected options to an array
$selected = [(string) $selected];
}
}
if (empty($options)) {
// There are no options
$options = '';
} else {
foreach ($options as $value => $name) {
if (is_array($name)) {
// Create a new optgroup
$group = ['label' => $value];
// Create a new list of options
$_options = [];
foreach ($name as $_value => $_name) {
// Force value to be string
$_value = (string) $_value;
// Create a new attribute set for this option
$option = ['value' => $_value];
if (in_array($_value, $selected)) {
// This option is selected
$option[] = 'selected';
}
// Change the option to the HTML string
$_options[] = '<option' . HTML::attributes($option) . '>' . HTML::chars($_name, false) . '</option>';
}
// Compile the options into a string
$_options = "\n" . implode("\n", $_options) . "\n";
$options[$value] = '<optgroup' . HTML::attributes($group) . '>' . $_options . '</optgroup>';
} else {
// Force value to be string
$value = (string) $value;
// Create a new attribute set for this option
$option = ['value' => $value];
if (in_array($value, $selected)) {
// This option is selected
$option[] = 'selected';
}
// Change the option to the HTML string
$options[$value] = '<option' . HTML::attributes($option) . '>' . HTML::chars($name, false) . '</option>';
}
}
// Compile the options into a single string
$options = "\n" . implode("\n", $options) . "\n";
}
return '<select' . HTML::attributes($attributes) . '>' . $options . '</select>';
}
Creates a submit form input.
echo Form::submit(null, 'Login');
string
$name
required - Input name string
$value
required - Input value array
$attributes
= NULL - Html attributes string
public static function submit($name, $value, array $attributes = null)
{
$attributes['type'] = 'submit';
return Form::input($name, $value, $attributes);
}
Creates a textarea form input.
echo Form::textarea('about', $about);
string
$name
required - Textarea name string
$body
= string(0) "" - Textarea body array
$attributes
= NULL - Html attributes boolean
$double_encode
= bool TRUE - Encode existing HTML characters string
public static function textarea($name, $body = '', array $attributes = null, $double_encode = true)
{
// Set the input name
$attributes['name'] = $name;
// Add default rows and cols attributes (required)
$attributes += ['rows' => 10, 'cols' => 50];
return '<textarea' . HTML::attributes($attributes) . '>' . HTML::chars($body, $double_encode) . '</textarea>';
}