You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CodeIgniter 4中为form_dropdown设置old()值?

解决CodeIgniter 4中form_dropdown无法回显提交值的问题

你遇到的问题由两处细节错误导致,以下是具体修正方案:

1. 修正表单属性数组的键名错误

你的$membership_type_option数组中,'name=' => 'membership_type'的键名多了个多余的等号,这会导致下拉框的name属性设置无效,表单提交后无法正确传递该字段值,old()自然获取不到对应数据。

修正这一行的键名:

$membership_type_option = [
    'id' => 'membership_type',
    'name' => 'membership_type', // 去掉键名里的等号
    'class' => 'form-select',
    // form_dropdown无需设置type属性,可删除该行
    // 'type' => 'text'
];

2. 保证选中值与选项键的类型匹配

模型返回的下拉选项键是数据库membership_type表的id(整数类型),而old()获取的提交值默认是字符串类型,类型不匹配会导致下拉框无法正确选中对应选项,需要强制转换类型保证一致性。

修正后的完整视图代码:

<span class="input-group-text" id="inputGroup-sizing-sm">Membership Type</span>
<?php
    $membership_type_option = [
        'id' => 'membership_type',
        'name' => 'membership_type',
        'class' => 'form-select'
    ];
    // 将old()返回值转为整数,与选项键类型匹配
    echo form_dropdown($membership_type_option, $membership_type, (int)old('membership_type'));
?>

额外验证要点

  • 确认表单提交时,membership_type字段已正确传递到后台:可在控制器中用$this->request->getPost('membership_type')打印验证。
  • 确认old()生效的前提:表单提交后必须调用return redirect()->back()->withInput();保留输入数据,否则old()无法获取之前的提交值。

内容的提问来源于stack exchange,提问作者Rod-Miller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 11:45:31