我正在开发一个Web应用程序,我想传递名为ID的变量,当表单方法是post
链接到打开其他形式但在config/routes
我使用$routes[page_A][get] = 'Controller'
而不是$routes[page_A][post] = 'Controller'
。
我在这里使用Codeigniter框架,我试图用$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>
我期望的是来自Sender的输入id
值将被传递并且在Recipient表单上捕获作为输入idClient
。任何人都可以帮助我找出解决方案吗?谢谢。
如果您不确定这样的请求类型,可以使用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);
}
在调用id
方法后,您忘记在重定向上包含save()
数据,因此您不会通过调用$this->input->get('id')
获得任何内容。
要解决此问题,请将id
数据与重定向一起传递:
redirect('progres_material?id=' . $this->input->post('id'));
但那当然会在网址上给你一个额外的参数。如果你不想要额外的参数,你也可以使用session在重定向时传递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');