Передача данных из функции контроллера в функцию контроллера перед перенаправлением

#php #codeigniter

#php #codeigniter

Вопрос:

Я использую codeigniter, у меня есть страница редактирования, которая показывает мне всю информацию о вакансии. Метод контроллера (вакансии) для загрузки этого представления выглядит следующим образом, он гарантирует, что все данные предварительно загружены.

 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)) amp;amp; ($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);
        }
    }
  

В этом представлении у меня есть разные формы для обновления разных разделов.
Каждая отправка формы переходит к другому методу в моем контроллере «Вакансии».

     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 …», я бы хотел, чтобы параметр сообщения обратной связи передавался моему «основному методу контроллера», который загружает представление с предварительно заполненными данными. (editVacancy).

Есть ли чистый способ сделать это?

Редактировать:

Я попытался использовать flashdata, я обновил код, чтобы вставить flashdata.

Однако, когда я выполняю var_dump($test); на мой взгляд, он остается нулевым.

РЕДАКТИРОВАТЬ 2: я заметил, когда я поместил свой $ _SESSION в переменную в моем методе контроллера editVacancy (на который перенаправляется) и var_dump, на мой взгляд, это не содержит ci_vars с flashdata.

Ответ №1:

Вместо использования set_header вы можете использовать redirect для этого простую функцию.

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

Комментарии:

1. Не вызовет ли это проблем при передаче переменной массива?

2. согласно вашему вопросу $vacancyid , единственное значение. если массив, вы можете разделить и передать его. Или можно также использовать flashdata

3. Я хочу, чтобы были переданы параметры $feedbackmsg, которые представляют собой массив. хорошая ли идея отправлять все строки ошибок обратно в URL с перенаправлением?

4. поэтому лучший способ для вашего случая — использовать FlashData. Знаете это??

5. Я погуглю, не слышал об этом раньше, спасибо, что указали мне другое направление!