summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--system/helpers/form_helper.php21
-rw-r--r--user_guide/changelog.html1
-rw-r--r--user_guide/helpers/form_helper.html1
3 files changed, 20 insertions, 3 deletions
diff --git a/system/helpers/form_helper.php b/system/helpers/form_helper.php
index c002c6fc0..01d0ea76d 100644
--- a/system/helpers/form_helper.php
+++ b/system/helpers/form_helper.php
@@ -268,11 +268,26 @@ if ( ! function_exists('form_dropdown'))
foreach ($options as $key => $val)
{
$key = (string) $key;
- $val = (string) $val;
- $sel = (in_array($key, $selected))?' selected="selected"':'';
+ if (is_array($val))
+ {
+ $form .= '<optgroup label="'.$key.'">'."\n";
+
+ foreach ($val as $optgroup_key => $optgroup_val)
+ {
+ $sel = (in_array($key, $selected)) ? ' selected="selected"' : '';
+
+ $form .= '<option value="'.$optgroup_key.'"'.$sel.'>'.(string) $optgroup_val."</option>\n";
+ }
- $form .= '<option value="'.$key.'"'.$sel.'>'.$val."</option>\n";
+ $form .= '</optgroup>'."\n";
+ }
+ else
+ {
+ $sel = (in_array($key, $selected)) ? ' selected="selected"' : '';
+
+ $form .= '<option value="'.$key.'"'.$sel.'>'.(string) $val."</option>\n";
+ }
}
$form .= '</select>';
diff --git a/user_guide/changelog.html b/user_guide/changelog.html
index 7892dc31e..9a3b613f3 100644
--- a/user_guide/changelog.html
+++ b/user_guide/changelog.html
@@ -82,6 +82,7 @@ SVN Revision: </p>
</li>
<li>Helpers
<ul>
+ <li>Added the ability to have optgroups in <kbd>form_dropdown()</kbd> within the <a href="helpers/form_helper.html">form helper</a>.</li>
<li>Added a doctype() function to the <a href="helpers/html_helper.html">HTML helper</a>.</li>
<li>Added ability to force lowercase for url_title() in the <a href="helpers/url_helper.html">URL helper</a>.</li>
</ul>
diff --git a/user_guide/helpers/form_helper.html b/user_guide/helpers/form_helper.html
index 2bb2a4a3a..8504ac02f 100644
--- a/user_guide/helpers/form_helper.html
+++ b/user_guide/helpers/form_helper.html
@@ -239,6 +239,7 @@ fourth parameter:</p>
<br />
echo form_dropdown('shirts', $options, 'large', $js);</code>
+<p>If the array passed as $options is a multidimensional array, form_dropdown() will produce an &lt;optgroup&gt; with the array key as the label.</p>
<h2>form_fieldset()</h2>