Как передать и перехватить переменную, когда метод POST, а затем маршрут GET? - PullRequest
0 голосов
/ 28 марта 2019

Я разрабатываю веб-приложение и хочу передать переменную с именем ID, когда метод формы post связан с открытием другой формы, но в config/routes я использую $routes[page_A][get] = 'Controller', а не $routes[page_A][post] = 'Controller'.

Я использую здесь Codeigniter Framework, я пытался заменить контроллер на $this->input->get('id'), но он не работает, и я понятия не имею, что на самом деле происходит в моих кодах.

Код представления формы отправителя

<form action="<?= base_url().'progres_save'; ?>" method="POST">
  <div class="form-group">
    <div class="form-row">
        <label for="idJobOrder">ID Job Order</label>
        <input type="text" name="idJobOrder" class="form-control" value="<?php echo $rd[0]->kodejobglobal; ?>" readonly>
   </div>
  </div>
  <div class="form-group">
    <div class="form-row">
       <a class="btn btn-primary col-xl-1 col-sm-1 mb-1 ml-auto mr-0 mr-md-2 my-0 my-md-3" href="job" id="back" role="button"><i class="fas fa-fw fa-arrow-left"></i> Back</a>
       <button class="btn btn-primary btn-block col-xl-1 col-sm-1 mb-1 mr-0 mr-md-2 my-0 my-md-3">Save <i class="fa fa-fw fa-arrow-right"></i></button>
       <input type="hidden" name="id" value="<?php echo $rd[0]->kodejobspesifik ?>">
     </div>
   </div>
</form>

Код контроллера формы отправителя

public function save()
    {
        $idglobal = $this->input->post('idJobOrder');

        $data = array('jobnya' => $idglobal );

        $this->Model_joborder->save_pg($data,'lapharian');
        redirect('progres_material');
    }

Маршруты конфигурациикод

$route['progres_save']['get']='error';
$route['progres_save']['post']='save';

$route['progres_material']['get']='matused';
$route['progres_material']['post']='error';

Код контроллера формы получателя

public function matused()
    {
        $id = $this->input->get('id');
        $data['rd'] = $this->Model_joborder->tampil2($id);
        $data['fb'] = $this->Model_joborder->data_cbb();
        $this->load->view('matused', $data);
    }

Форма просмотра формы кода

<form method="POST" action="<?= base_url().'matsave'; ?>">
   <div class="form-group">
      <div class="form-row">
         <?php if (isset($rd[0])) {?>
         <input type="hidden" value="<?php echo $rd[0]->jobspesifiknya; ?>" name="idClient" class="form-control" placeholder="First name" readonly>                  
         <?php } ?>
      </div>
   </div>
</form>

Я ожидаю, что входное значение id от Отправителя будет передано и перехвачено в форме Получателя в качестве ввода idClient.Может кто-нибудь ей помочь мне найти решение?Спасибо.

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Вы забыли включить данные id в редирект после вызова метода save(), поэтому вы ничего не получите, вызвав $this->input->get('id').

Чтобы решить эту проблему, передайте данные id вместе с перенаправлением:

redirect('progres_material?id=' . $this->input->post('id'));

Но это, конечно, даст вам дополнительный параметр в URL.Если вам не нужен дополнительный параметр, вы можете использовать сеанс для передачи id данных во время перенаправления, в CodeIgniter есть метод с именем set_flashdata, который делает это:

$this->session->set_flashdata('id', $this->input->post('id'));
redirect('progres_material');

И чтобы получитьid данные сеанса по методу matused(), используйте следующий код:

$id = !empty($this->session->flashdata('id')) ? $this->session->flashdata('id') : $this->input->get('id');
0 голосов
/ 28 марта 2019

Вы можете использовать глобальную переменную PHP $_REQUEST для захвата данных, если вы не уверены в типе запроса, подобном этому,

public function matused()
    {
        $id = $_REQUEST['id'];
        $data['rd'] = $this->Model_joborder->tampil2($id);
        $data['fb'] = $this->Model_joborder->data_cbb();
        $this->load->view('matused', $data);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...