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

CodeIgniter3提交表单报ArgumentCountError参数数量错误如何解决?

错误原因

报错触发的核心是Staff控制器的donate方法要求必须传入1个$donor参数,运行过程中存在无参数调用该方法的场景:

  • 表单提交验证成功后跳转的地址redirect(base_url('index.php/staff/donate'))没有携带donorID参数,跳转后触发参数缺失错误
  • 直接访问staff/donate路径不传参也会触发相同错误

修复方案

1. 给donate方法添加默认参数+参数校验

修改Staff控制器的donate方法,避免无参数访问直接抛错:

// 给$donor参数设置默认值null,无参数调用时不会触发ArgumentCountError
public function donate($donor = null) {
    // 无有效捐赠者ID时跳转到捐赠者选择页/列表页,可替换为你项目实际的对应路径
    if (empty($donor) || !is_numeric($donor)) {
        $this->session->set_flashdata('error', '请先选择对应捐赠者');
        redirect(base_url('index.php/staff'));
    }
    $this->load->model('Donor_Model');
    $data['donor'] = $this->Donor_Model->donate($donor);
    $this->load->view('packetregister', $data);
}

2. 修改savePacket方法的跳转逻辑

保存成功后跳转回donate页面时,拼接当前捐赠者ID作为参数传递:

public function savePacket($packet = null) {
    // 新增捐赠者ID合法性校验
    if (empty($packet) || !is_numeric($packet)) {
        $this->session->set_flashdata('error', '捐赠者ID无效');
        redirect(base_url('index.php/staff'));
    }

    $donatedDate = $this->input->post('packetdonateddate');
    $expiringDate = date('Y-m-d', strtotime($donatedDate. ' + 42 days'));

    $this->form_validation->set_rules('packetdonateddate', 'Donated Date', 'required');

    if ($this->form_validation->run()) {
        $data = [
            'DonorID' => $this->input->post('donorid'),
            'DonatedDate' => $this->input->post('packetdonateddate'),
            'ExpiringDate' => $expiringDate,
            'comments' => $this->input->post('comments'),
        ];
        $this->load->model('Donor_Model');
        // 移除原错误赋值:savePacket返回布尔值,不需要赋值给$data['donor']
        $this->Donor_Model->savePacket($data);
        $this->session->set_flashdata('packetsaved', 'Donation successful!');
        // 跳转时拼接捐赠者ID参数
        redirect(base_url('index.php/staff/donate/'.$this->input->post('donorid')));
    } else {
        $this->donate($packet);
    }
}

内容的提问来源于stack exchange,提问作者Pasindu Ruwandeniya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:36:01