【问题标题】:Passing data from controller function to controller function before redirect在重定向之前将数据从控制器函数传递到控制器函数
【发布时间】:2016-10-07 12:52:22
【问题描述】:

我正在使用 codeigniter 我有一个编辑页面,它显示了一个空缺的所有信息。 加载此视图的 (Vacancy) 控制器方法如下所示,它确保预加载所有数据。

public function editVacancy($vacancyid)
    {
        $this->is_logged_in();
        $this->load->model('vacancy/vacancies_model');

        // Passing Variables
        $data['title'] = 'Titletest';
        $data['class'] = 'vacancy';

        $orgadminuserid = $this->vacancies_model->getOrgAdminUserId($vacancyid);

        if ((!is_null($orgadminuserid)) && ($this->auth_user_id == $orgadminuserid[0]->user_id)) {
            $data['vacancyid'] = $vacancyid;
            $data['vacancy'] = $this->vacancies_model->get($vacancyid);
            $data['test'] = $this->session->flashdata('feedbackdata');

            $partials = array('head' => '_master/header/head', 'navigation' => '_master/header/navigation_dashboard', 'content' => 'dashboard/vacancy/edit_vacancy', 'footer' => '_master/footer/footer');
            $this->template->load('_master/master', $partials, $data);
        }
    }

在这个视图中,我有不同的形式来更新不同的部分。 在我的'Vacancy'控制器中,每个表单提交都会转到不同的方法。

    public function saveGeneralInfo()
        {
            $this->is_logged_in();
            $this->load->model('vacancy/vacancies_model');

            $vacancyid = $this->input->post('vacancyid');
            $vacancyUpdateData = $this->vacancies_model->get($vacancyid);

                $result = $this->vacancies_model->update($vacancyid, $vacancyUpdateData);
                if ($result) {
                    $feedbackdata = array(
                       'type'  => 'alert-success',
                       'icon'     => 'fa-check-circle',
                       'title' => 'Success!',
                       'text' => 'De algemene vacature gegevens zijn geupdate.'
                  );
                      $this->session->set_flashdata('feedbackdata', $feedbackdata);
                      redirect("dashboard/vacancy/editVacancy/" . $vacancyid);
                }
            }

    }

我在代码“//HERE ...”中指出的位置是我希望将反馈消息参数传递给我的“主控制器方法”的位置,该方法会使用预填充的数据加载视图。 (编辑空缺)。

有没有一种干净的方法可以做到这一点?

编辑:

我尝试使用 flashdata,我更新了代码以插入 flashdata。

但是,当我执行 var_dump($test);在我看来,它仍然为空。

编辑 2: 我注意到,当我将 $_SESSION 放入我的 editVacancy 控制器方法(被重定向到)中的一个变量中并 var_dump 时,我认为这不包含带有 flashdata 的 ci_vars。

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    您可以使用简单的redirect 函数来代替set_header

    redirect("dashboard/vacancy/editVacancy/".$vacancyid);
    

    【讨论】:

    • 这不会在传递数组变量时出现问题吗?
    • 根据你的问题$vacancyid单值。如果数组,您可以拆分并传递它。或者也可以使用 flashdata
    • 我想要传递的$feedbackmsg参数,它是一个数组。使用重定向将所有错误字符串发送回 URL 是否是个好主意?
    • 所以最适合您的情况的方法是使用 FlashData。知道吗??
    • 我去google一下,之前没听说过谢谢你指点我另一个方向!
    猜你喜欢
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    相关资源
    最近更新 更多