【问题标题】:Codeigniter set_value() and populate the form valueCodeigniter set_value() 并填充表单值
【发布时间】:2013-01-18 01:03:19
【问题描述】:

我的表单域是这样的

    echo form_label('Quantity', 'quantity');
    echo form_input('quantity', $quantityx);

我修改它以保留表单值

    echo form_label('Quantity', 'quantity');
    echo form_input('quantity', $this->input->post('quantity'));

我在后面的代码中设置了上面的 $quantityx,以便从数据库中填充一个值,以便用户可以编辑一行。

如何保留验证值,同时从数据库中填充变量?

我已经试过了

    echo form_label('Quantity', 'quantity');
    echo form_input('quantity', set_value($quantityx));

感谢您的任何建议

【问题讨论】:

    标签: php forms codeigniter retain


    【解决方案1】:

    你可以像这样设置它们,如果set_value('columnanme')返回false那么一个表单$_POST没有发生所以它会做的是从数据库示例中获取数据 $profile->firstname

    $firstname = set_value('firstname') == false ? $profile->firstname : set_value('firstname');
    $lastname = set_value('lastname') == false ? $profile->lastname : set_value('lastname');
    

    像这样使用它:

    echo form_label('Firstname', 'fname');
    echo form_input('firstname', $firstname);
    echo form_label('Firstname', 'lnamey');
    echo form_input('firstname', $lastname);
    

    你可以这样做:

    $quantity = set_value('Quantity') == false ? $quantityx : set_value('Quantity');
    

    在你的表格上:

    echo form_label('Quantity', 'quantity');
        echo form_input('quantity', $quantity);
    

    假设 $quantityx 持有您数据库中的数据

    编辑
    ================================= ============

    只需使用set_values() 第二个参数作为默认值。即set_value('name_of_input_field',$data_from_databse_as_default); 如果这不起作用,请使用我的第一个答案。

    【讨论】:

    • 相反,我宁愿只使用 set_value 中的第二个参数,而不是做不必要的 if else 检查。例如。 echo form_input('quantity', set_value('quantity', $profile->firstname) )。第二个参数是后备值。
    【解决方案2】:

    您可以尝试使用此代码在验证并从数据库中获取值时设置文本字段中的值。

    form_input(array('id' => 'cat_name', 'name' => 'cat_name','value'=>set_value('cat_name',$cat_name))); 
    

    【讨论】:

      【解决方案3】:

      填充下面的代码对我有用。

      form_input('cat_name','{YOUR VALUE}',array('id' => 'cat_name', ''placeHolder'' => 'Enter Cat Name')); 
      

      【讨论】:

        【解决方案4】:

        输入有 3 种基本类型。以下是如何重新填充它们。

        文本输入

        $quantity = getValueFromDb();
        echo form_input(
            ['name' => 'textInput',],
            set_value('textInput', $quantity, false)
        );
        

        使用false作为set_value的第三个参数来避免双重html转义,这也是form_input完成的。

        下拉菜单

        $quantity = getValueFromDb();
        $quantities = getQuantitiesList();
        echo form_dropdown(
            [ 'name' => 'formDropdown'],
            [''=>'-- Select Quantity --'] + $quantities,
            set_value('formDropdown', $quantity, false)
        );  
        

        单选按钮

        $quantity = getValueFromDb();
        echo form_radio(
            ['name'=>'formRadio'],
            5,
            set_radio('formRadio', 5, $quantity === 5)
        ), 5;
        echo form_radio(
            ['name'=>'formRadio'],
            10,
            set_radio('formRadio', 10, $quantity === 10)
        ), 10;
        

        对于单选输入,使用循环替换文字。

        复选框

        可以通过将form_radio 替换为form_checkbox 并将set_radio 替换为set_checkbox 以类似的方式制作复选框。

        $values = [ 5 => 'Five', 10 => 'Ten', 15 => 'Fifteen',];
        $selectedValues = [5, 15];
        foreach ($values as $value => $label) {
            echo form_checkbox(
                ['name' => 'formCheckbox[]'],
                $value,
                set_checkbox(
                    'formCheckbox[]', 
                    $value,
                    in_array($value, $selectedValues, true)
                )
            ), $label;
        }
        

        【讨论】:

          猜你喜欢
          • 2012-08-12
          • 2014-02-09
          • 2012-08-12
          • 2013-06-24
          • 2012-10-22
          • 1970-01-01
          • 2011-04-21
          • 2010-11-10
          • 1970-01-01
          相关资源
          最近更新 更多