Browse Source

Add support for Form::select with optgroup, solved #526

crynobone 12 years ago
parent
commit
ec9f5f1995
1 changed files with 28 additions and 1 deletions
  1. 28 1
      laravel/form.php

+ 28 - 1
laravel/form.php

@@ -397,12 +397,39 @@ class Form {
 
 
 		foreach ($options as $value => $display)
 		foreach ($options as $value => $display)
 		{
 		{
-			$html[] = static::option($value, $display, $selected);
+			if (is_array($display)) 
+			{
+				$html[] = static::optgroup($display, $value, $selected);
+			}
+			else
+			{
+				$html[] = static::option($value, $display, $selected);
+			}
 		}
 		}
 
 
 		return '<select'.HTML::attributes($attributes).'>'.implode('', $html).'</select>';
 		return '<select'.HTML::attributes($attributes).'>'.implode('', $html).'</select>';
 	}
 	}
 
 
+	/**
+	 * Create a HTML select element optgroup.
+	 *
+	 * @param  array   $options
+	 * @param  string  $label
+	 * @param  string  $selected
+	 * @return string
+	 */
+	protected static function optgroup($options, $label, $selected)
+	{
+		$html = array();
+
+		foreach ($options as $value => $display)
+		{
+			$html[] = static::option($value, $display, $selected);
+		}
+
+		return '<optgroup label="'.HTML::entities($label).'">'.implode('', $html).'</option>';
+	}
+
 	/**
 	/**
 	 * Create a HTML select element option.
 	 * Create a HTML select element option.
 	 *
 	 *