Codeigniter的set_value()和populate函数设置表单值

8
我的表单字段长这样。
    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));

感谢任何建议。
4个回答

9

如果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); 如果这不起作用,请使用我的第一个答案。

3
我更喜欢在set_value中直接使用第二个参数,而不需要进行不必要的if else检查。例如: echo form_input('quantity', set_value('quantity', $profile->firstname) )。第二个参数是备选值。 - Edhen

2
以下代码对于我来说可以填充下面的值。
form_input('cat_name','{YOUR VALUE}',array('id' => 'cat_name', ''placeHolder'' => 'Enter Cat Name')); 

0
你可以尝试这段代码,在验证时设置文本字段中的值并从数据库获取该值。
form_input(array('id' => 'cat_name', 'name' => 'cat_name','value'=>set_value('cat_name',$cat_name))); 

0

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

文本输入

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

set_value的第三个参数中使用false,以避免双重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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接