【问题标题】:Codeigniter - input post method is removing or emptying the post data from multi select fieldCodeigniter - 输入帖子方法正在从多选字段中删除或清空帖子数据
【发布时间】:2018-02-14 09:21:15
【问题描述】:

我正在使用 Codeigniter 3.0.0 版本

当尝试使用$this->input->post() 方法访问名为subjecID[ ] 的多选下拉字段的值时,它返回空值。但是当我访问$_POST['subjectID'] 时,我可以从subjecID[ ] 字段中看到数组形式的值。即使在旧版本的 Codeigniter 中,我也能够从帖子中获取数据作为数组。那么,可能是什么问题。请告诉我是否有任何配置要更改?

下面是我的控制器功能。

protected function rules() {
    $rules = array(
        array(
            'field' => 'name',
            'label' => $this->lang->line("teacher_name"),
            'rules' => 'trim|required|max_length[60]'
        ),
        array(
            'field' => 'subjectID',
            'label' => $this->lang->line("select_subject"),
            'rules' => 'required'
        )
    );
    return $rules;
}

public function add() {
            $this->data['subjects'] = $this->subject_create_m->get_subject();
    if($_POST) {
        $rules = $this->rules();
        $this->form_validation->set_rules($rules);
        if ($this->form_validation->run() == FALSE) {
            $this->data['form_validation'] = validation_errors();
            $this->data["subview"] = "teacher/add";
            $this->load->view('_layout_main', $this->data);
        } else {
            $array = array();
            $array['name'] = $this->input->post("name");
            $array['specialization'] = serialize($this->input->post('subjectID[]'));
            print_r($array);
        }
    } else {
        $this->data["subview"] = "teacher/add";
        $this->load->view('_layout_main', $this->data);
    }

}

以下是我使用以下代码打印帖子得到的输出

print_r($this->input->post(NULL, FALSE));

Array ( [name] => sfgfdsgfsd [subjectID] => )

因为每次验证失败都会出现这个问题。

【问题讨论】:

  • 试试这个$this->input->post('subjects')
  • 你能告诉我你的控制器吗?
  • 在这个范围内直到 3.1.7 都没有变化,你仍然可以使用 $this->input->post('subjects')
  • 在验证规则中试试这个 'field' => 'subjectID[]' 而不是 'field' => 'subjectID'
  • 非常感谢阿卜杜勒。它正在工作。

标签: php codeigniter codeigniter-3


【解决方案1】:

在验证规则中试试这个'field' => 'subjectID[]' 而不是'field' => 'subjectID'

【讨论】:

    【解决方案2】:

    试试这个

    $this->input->post('subjects[]');
    

    检查配置中的助手

    $autoload['helper'] = array('form');
    

    【讨论】:

    • 请在查看页面中确认下拉名称“subjects[]”
    【解决方案3】:

    我最近刚刚使用了多个输入类型的数组,它的工作原理 使用 $this->input->post('subjects');

    【讨论】:

    • 是的,当应用程序在 2.X 上运行时,我一直这样访问很长时间,但是当我升级到框架到 3.0.0 版本时,我遇到了这个问题。
    【解决方案4】:

    使用 var_dump($this->input->post()) 或者 你有没有从 url 中删除 index.php

    【讨论】:

      【解决方案5】:

      您可以使用

      获取选定值的数组
      $this->input->post('subjects');
      

      或者你使用php post变量来获取数据

      if(isset($_POST[subjects])){
      foreach($_POST[subjects]) as $subject){
      
      }
      }
      

      最好在此处发布您的表单 html 代码,以便发布正确的答案

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-30
        • 2015-10-01
        • 1970-01-01
        相关资源
        最近更新 更多