Codeigniter Form Helper - How to add additional parameters to "select" control? -
i need modify site written in codeigniter i'm no expert.
one thing i'd modify select control in form use ms-dropdown drop-down list including pictures.
however, can't work out how make codeigniter form helper render parameters other id , value in each option. in case, make ms-dropdown work, need render data-image="..." in each option.
the current code looks like:
$dropdown = array( 'name'=>'mydropdown', 'options' => array('op1'=>'first option', 'op2' =>'second option') ); echo form_dropdown($dropdown['name'],$dropdown['options']);
this renders as
<select name="mydropdown"> <option value='op1'>first option</option> <option value='op2'>second option</option> </select>
is there way me make codeigniter render
<select name="mydropdown"> <option value='op1' data-image="filepath1">first option</option> <option value='op2' data-image="filepath2">second option</option> </select>
you can't. need extend ci's form helper , modify form_dropdown accept other attributes id's
you have extend helper .
to extend native form helper you'll create file named application/helpers/my_form_helper.php, , add or override functions:
if want override function form_dropdown
simply write function way want in my_form_helper.php
here base function
if ( ! function_exists('form_dropdown')) { function form_dropdown($name = '', $options = array(), $selected = array(), $extra = '') { if ( ! is_array($selected)) { $selected = array($selected); } // if no selected state submitted attempt set automatically if (count($selected) === 0) { // if form name appears in $_post array have winner! if (isset($_post[$name])) { $selected = array($_post[$name]); } } if ($extra != '') $extra = ' '.$extra; $multiple = (count($selected) > 1 && strpos($extra, 'multiple') === false) ? ' multiple="multiple"' : ''; $form = '<select name="'.$name.'"'.$extra.$multiple.">\n"; foreach ($options $key => $val) { $key = (string) $key; if (is_array($val) && ! empty($val)) { $form .= '<optgroup label="'.$key.'">'."\n"; foreach ($val $optgroup_key => $optgroup_val) { $sel = (in_array($optgroup_key, $selected)) ? ' selected="selected"' : ''; $form .= '<option value="'.$optgroup_key.'"'.$sel.'>'.(string) $optgroup_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>'; return $form; } }
you have edit part ,
foreach ($options $key => $val) { $key = (string) $key; if (is_array($val) && ! empty($val)) { $form .= '<optgroup label="'.$key.'">'."\n"; foreach ($val $optgroup_key => $optgroup_val) { $sel = (in_array($optgroup_key, $selected)) ? ' selected="selected"' : ''; $form .= '<option value="'.$optgroup_key.'"'.$sel.'>'.(string) $optgroup_val."</option>\n"; } $form .= '</optgroup>'."\n"; } else { $sel = (in_array($key, $selected)) ? ' selected="selected"' : ''; $form .= '<option value="'.$key.'"'.$sel.'>'.(string) $val."</option>\n"; } }
as can see , option's value attribute set function , can edit code , thing want ,
try , if not , tell me ll , first give try :)
Comments
Post a Comment