我正在开发一个Web应用程序,并且当表单方法为post
并链接到其他表单时,我想传递一个名为ID的变量,但是在config/routes
中,我正在使用{{1 }}不是$routes[page_A][get] = 'Controller'
。
我在这里使用Codeigniter框架,我试图用$routes[page_A][post] = 'Controller'
更改控制器,但是它不起作用,我也不知道代码中到底发生了什么。
发件人表单查看代码
$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
。她有人可以帮助我找出解决方案吗?谢谢。
答案 0 :(得分:0)
如果不确定此类请求类型,可以使用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);
}
答案 1 :(得分:0)
在调用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');