diff --git a/system/form.php b/system/form.php
index b596216c0..b303c0ed2 100644
--- a/system/form.php
+++ b/system/form.php
@@ -2,6 +2,13 @@
class Form {
+ /**
+ * Stores labels names.
+ *
+ * @var array
+ */
+ private static $labels = array();
+
/**
* Open a HTML form.
*
@@ -46,6 +53,16 @@ class Form {
return $html.PHP_EOL;
}
+ /**
+ * Close a HTML form.
+ *
+ * @return void
+ */
+ public static function close()
+ {
+ return ''.PHP_EOL;
+ }
+
/**
* Generate a hidden field containing the current CSRF token.
*
@@ -71,6 +88,21 @@ class Form {
return Session::get('csrf_token');
}
+ /**
+ * Create a HTML label element.
+ *
+ * @param string $name
+ * @param string $value
+ * @param array $attributes
+ * @return string
+ */
+ public static function label($name, $value, $attributes = array())
+ {
+ static::$labels[] = $name;
+
+ return ''.PHP_EOL;
+ }
+
/**
* Create a HTML text input element.
*
@@ -189,6 +221,8 @@ class Form {
{
$attributes['checked'] = 'checked';
}
+
+ (in_array($name, static::$labels)) ? $attributes['id'] = $name : null;
return static::input($type, $name, $value, $attributes);
}
@@ -204,6 +238,7 @@ class Form {
public static function textarea($name, $value = '', $attributes = array())
{
$attributes['name'] = $name;
+ (in_array($name, static::$labels)) ? $attributes['id'] = $name : null;
// -------------------------------------------------------
// Set the default number of rows.
@@ -236,6 +271,7 @@ class Form {
public static function select($name, $options = array(), $selected = null, $attributes = array())
{
$attributes['name'] = $name;
+ (in_array($name, static::$labels)) ? $attributes['id'] = $name : null;
$html_options = array();
@@ -265,6 +301,7 @@ class Form {
$attributes['type'] = $type;
$attributes['name'] = $name;
$attributes['value'] = $value;
+ (in_array($name, static::$labels)) ? $attributes['id'] = $name : null;
return ''.PHP_EOL;
}