Opened 6 months ago
Last modified 6 months ago
#22409 new enhancement
add multiple selected options support to selected() function
| Reported by: |
|
Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | Awaiting Review |
| Component: | Validation | Version: | 3.4.2 |
| Severity: | minor | Keywords: | |
| Cc: |
Description
The current selected() function returns selected="selected" if two strings match, but does not correctly handle arrays that result from select options that have multiple="multiple" enabled (it just checks the first item in the array by forcing a string type).
I suggest either adding correct handling of arrays or alternatively adding a separate multiselected() function to handle this situation.
This could be accomplished by altering the current __checked_selected_helper() function to this:
function __checked_selected_helper( $helper, $current, $echo, $type ) {
if( is_array( $helper ) && in_array( $current, $helper, true ) )
$result = " $type='$type'";
elseif ( (string) $helper === (string) $current )
$result = " $type='$type'";
else
$result = '';
if ( $echo )
echo $result;
return $result;
}
I've just added the first 2 lines and changed the first if to an elseif.
Change History (1)
Note: See
TracTickets for help on using
tickets.

This isn't the most efficient way to do this, but I just wanted to demonstrate the point that in_array() should be used instead of === when the $helper is an array.