Codeigniter表格扩展助手

时间:2014-03-19 04:45:52

标签: php jquery codeigniter

我尝试使用jquery链接进行链式选择,但是codeigniter echo表格下拉列表不允许单独分配CLASS。

我想将CLASS分配给每个列表,如下例所示。

<select name="hardware">
<option class="printer" value="" selected="selected"></option>
<option class="printer" value="EPSON">EPSON</option>
<option class="printer" value="HP">HP</option>
<option class="hdd" value="WD">WD</option>
<option class="hdd" value="SEAGATE">SEAGATE</option>
</select>  

这是codeigniter表格下拉列表

查看页面:

 <form action="" method="">
    $select = 'hardware';
    echo form_dropdown('hardware', $hardware,set_value('hardware',$this->input->post('hardware'))); ?>  
 </form>  

我已将选择表单更改为此。

<select name="supplier">
<?php foreach($supplier as $row){ ?>
<option value="<?php echo $row['supplier'];?>"><?php echo $row['supplier'];?>  
</option>
<?php }?>
</select>  

如何在验证失败后返回所选值?

2 个答案:

答案 0 :(得分:0)

使用form_dropdown()是不可能的,因为codeigniter不允许任何参数设置&#34; extra&#34;属性如选项标记中的类。

检查此功能:这是核心功能form_dropdown():

function form_dropdown($name = '', $options = array(), $selected = array(), $extra = '')
    {
        if ( ! is_array($selected))
        {
            $selected = array($selected);
        }

        // If no selected state was submitted we will attempt to set it automatically
        if (count($selected) === 0)
        {
            // If the form name appears in the $_POST array we have a 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 as $key => $val)
        {
            $key = (string) $key;

            if (is_array($val) && ! empty($val))
            {
                $form .= '<optgroup label="'.$key.'">'."\n";

                foreach ($val as $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;
    }

答案 1 :(得分:0)

您想要做什么,您必须创建自己的助手,请参阅文档中的“扩展助手”。我会做所说的并将“MY_helper.php”版本复制到您的应用程序文件夹中;除非你真的需要,否则不要乱用核心。

http://ellislab.com/codeigniter/user-guide/general/helpers.html

您可以使用values数组并在数组中设置一个类和项(并在帮助器中更改第327行附近的foreach)或传递另一个数组并在foreach中检查它。