【问题标题】:how to pass variable from one function to another in same controller如何在同一控制器中将变量从一个函数传递到另一个函数
【发布时间】:2018-12-20 17:03:57
【问题描述】:

我想将一个函数的变量传递给另一个函数,两者都在同一个控制器中,我正在使用 Codeigniter,我的控制器代码是

public function passes() {
    $this->question();
    $this->load->view('passes', $data);
}

public function question() {
    if ($this->input->post('slug')) {
        $slug = $_POST['slug'];
        $slug = $this->Welcome_model->selectid($slug);
        $passcat_id = $slug[0]->id;
        log_message('error', 'collected id is ' . $passcat_id);
        $data['question'] = $this->Welcome_model->selectquestion($passcat_id);
    }
}

这是我要在视图页面中打印数据 $data['question'] 的代码。

谢谢。

【问题讨论】:

  • 设置会话怎么样?例如,$this->session->set_userdata('passcat_id',$passcat_id);然后调用会话 $pass = $this->session->userdata('passcat_id'); ...
  • $data = $this->data_from_other_function(); 这对我有用

标签: codeigniter


【解决方案1】:

您可以按照以下解决方案更改您的代码。

    public function passes() {
        $data = $this->question();
        $this->load->view('passes', $data);
    }

    public function question() {
        $data = array();
        if ($this->input->post('slug')) {
            $slug = $this->input->post('slug');
            $slug = $this->Welcome_model->selectid($slug);
            $passcat_id = $slug[0]->id;
            log_message('error', 'collected id is ' . $passcat_id);
            $data['question'] = $this->Welcome_model->selectquestion($passcat_id);
        }
        return $data;
    }

我希望这会对你有所帮助。谢谢!

【讨论】:

    【解决方案2】:
    public function passes(){
        $data = $this->question();
        $this->load->view('passes',$data);
    }
    
    public function question()
    {
    if($this->input->post('slug')) {
            $slug = $this->input->post('slug');
            $slug = $this->Welcome_model->selectid($slug);
            $passcat_id = $slug[0]['id'];
            log_message('error', 'collected id is ' . $passcat_id);
            $data['question']= $this->Welcome_model->selectquestion($passcat_id);
             return $data;
    }
    }
    

    我希望这会对你有所帮助。谢谢!

    【讨论】:

      【解决方案3】:

      您可以为此使用flashdataredirect 的组合

      public function passes()
      {
          // 3.) Get your question
          $question = $this->session->flashdata('item');
          // 4.) Pass to view
          $this->load->view('passes', ['question' => $question]);
      }
      
      public function question()
      {
          if ($this->input->post('slug')) {
              $slug = $_POST['slug'];
              $slug = $this->Welcome_model->selectid($slug);
              $passcat_id = $slug[0]->id;
              log_message('error', 'collected id is ' . $passcat_id);
              $question = $this->Welcome_model->selectquestion($passcat_id);
      
              // 1.) Store your data in flash data
              $this->session->set_flashdata('question', $question);
              // 2.) Redirect to your passes function
              redirect('/yourcontroller/passes');
          }
      }
      

      【讨论】:

        【解决方案4】:

        请试试这个:

        public function question($input)
        {
             if(!emtpy($input) {
                $slug = $input;
                $slug = $this->Welcome_model->selectid($slug);
                $passcat_id = $slug[0]->id;
                log_message('error', 'collected id is ' . $passcat_id);
                $data['question']= $this->Welcome_model->selectquestion($passcat_id);
                return $data['question'];
             }
        
        }
        public function passes(){
             $this->question($_POST['input']);
             $this->load->view('passes',$data);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多