【问题标题】:Codeigniter redirect() not working as intendedCodeigniter 重定向()未按预期工作
【发布时间】:2018-10-24 05:32:44
【问题描述】:

我已经开始使用 Codeigniter。所以,我有两个控制器任务和项目。在我的任务控制器中,我有一个编辑现有任务的功能,编辑完任务后,我想重定向到项目控制器的显示方法,该方法将参数作为与任务关联的 project_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_project_id) 重定向到项目控制器的显示方法,因为项目控制器的显示功能是 display($project_id)。但这将项目控制器的索引功能重定向到我。重定向有什么问题?我以为 CI 中的 URL 结构是controller/function/parameter1/parameter2

【问题讨论】:

  • redirect('projects/edit');替换重定向行
  • 你缺少引号......甚至堆栈代码格式化程序也能识别它。

标签: php codeigniter


【解决方案1】:

您在编写重定向函数时犯了错误。它应该如下所示。

redirect('projects/display/'.$task_project_id);

redirect('projects/edit');

【讨论】:

    【解决方案2】:
    redirect($uri = '', $method = 'auto', $code = NULL)
    
    codeigniter 中的

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

    【讨论】:

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