代码之家  ›  专栏  ›  技术社区  ›  Knownow

Codeignitor redirect()未按预期工作

  •  0
  • Knownow  · 技术社区  · 8 年前

    我已经开始使用Codeigniter了。所以,我有两个控制器任务和项目。在我的任务控制器中,我有一个编辑现有任务的功能,在编辑任务后,我想重定向到项目控制器的显示方法,该方法将参数作为与任务关联的项目id。

    这是我的任务控制器:

     public function edit($task_id,$task_project_id){
        $this->form_validation->set_rules('task_name', 'Task Name','trim|required');
        $this->form_validation->set_rules('task_description', 'Task Description','trim|required');
        if ($this->form_validation->run() == FALSE){
            $result=$this->task_model->get_task($task_id);
            $data['task_name']=$result->task_name;
            $data['due_on']=$result->due_on;
            $data['task_description']=$result->task_description;
            $data['id']=$task_id;
            $data['task_project_id']=$task_project_id;
            $data['main_view']="tasks/edit_task";
            $this->load->view('layout/user', $data);
        } else { 
                $data['task_project_id']=$task_project_id;
                $data['task_name']=$this->input->post('task_name');
                $data['due_on']=$this->input->post('due_on');
                $data['task_description']=$this->input->post('task_description');
                $data['id']=$task_id;
                if ($this->task_model->edit($data)){
                $this->session->set_flashdata('task_edited' ,'Task Edited Succesfully');
                redirect(projects/display/$task_project_id); THIS SEEMS TO BE THE PROBLEM .
            }else{
                $this->session->set_flashdata('task_edited_failure' ,'Task Not Edited Succesfully');
                redirect(projects/edit);
            }
        }
    }
    

    这是我的项目控制器及其索引和显示功能:

        public function index()
    {
            $data['projects']=$this->projects_model->get_projects();
            $data['main_view']="projects/home_view";
            $this->load->view('layout/user.php',$data);
    }
    public function display($project_id){
            $data['task']=$this->task_model->get_tasks($project_id);
            $data['project']=$this->projects_model->get_project($project_id);
            $data['main_view']="projects/display";
            $this->load->view('layout/user.php',$data);
    }
    

    因此,在我的任务控制器中,我尝试使用redirect(projects/display/$task\u project\u id)重定向到projects控制器的显示方法,因为projects控制器的显示函数是 display($project_id) . 但这是重定向到我的项目控制器的索引函数。重定向有什么问题?我以为CI中的URL结构是 controller/function/parameter1/parameter2 .

    2 回复  |  直到 6 年前
        1
  •  1
  •   Talk2Nit    8 年前

    你写重定向函数时出错了。应该是这样的。

    redirect('projects/display/'.$task_project_id);
    
    redirect('projects/edit');
    
        2
  •  1
  •   Abhishek    8 年前
    redirect($uri = '', $method = 'auto', $code = NULL)
    

    codeigniter中的redirect()函数使用在根目录中定义的url。你不能直接跳到控制器。

    推荐文章