Php Codeigniter form_open()在将变量从控制器传递到视图时加载视图文件两次
我的控制器是沿着Php Codeigniter form_open()在将变量从控制器传递到视图时加载视图文件两次,php,codeigniter,Php,Codeigniter,我的控制器是沿着 public function create_room($id_1, $id_2) { $data['id_1'] = $id_1; $data['id_2'] = $id_2; $data['query'] = $this->model->get_all(); $this->load->view('viewFilePath', $data); $this->for
public function create_room($id_1, $id_2) {
$data['id_1'] = $id_1;
$data['id_2'] = $id_2;
$data['query'] = $this->model->get_all();
$this->load->view('viewFilePath', $data);
$this->form_validation->set_rules // set the rules
if ($this->form_validation->run() === FALSE) {
$this->load->view('viewFilePath');
$this->session->set_flashdata('error', "errorMessage");
} else { (do the query)
}
我的看法
<?php echo form_open('theURL'.$id_1.'/'.$id_2.'/URLEnding');?>
视图加载了两次,很可能是因为我在两个文件中加载了一次视图
基本上我想:
- 将$id_1和$id_2作为参数从打开的URL传递给控制器函数李>
- 使用$id_1和$id_2在控制器中查询李>
- 将查询数据传递给视图
- 从create_room()中删除load->view(没有$data从视图传递到控制器)
$this->form_validation->set_rules // set the rules
if ($this->form_validation->run() === FALSE) {
$this->load->view('viewFilePath');
$this->session->set_flashdata('error', "errorMessage");
} else { (etc)
请更改您的代码,因为查看通话两次,所以如果您删除一个通话,另一个则将第二个通话移到其他部分
$data['id_2'] = $id_2;
$data['query'] = $this->model->get_all();
$this->form_validation->set_rules // set the rules
if ($this->form_validation->run() === FALSE) {
$this->load->view('viewFilePath');
$this->session->set_flashdata('error', "errorMessage");
} else {
$this->load->view('viewFilePath', $data);
(etc)
您通过$this->load->view('viewFilePath',$data)加载视图两次。从form_validation->run()条件中删除此代码。@Rahathamed我确实尝试过,但视图没有运行,因为我需要使用$data在视图中填充一个表,并且没有$data从控制器传递到视图。我知道我在原来的帖子中没有提到will update,谢谢你的回复。“theURL”由一个控制器和一个函数(除了参数之外)组成,对吗?。因此,您需要做的就是将表单验证放在那里。谢谢,但这不起作用,因为我必须使用$data['query']在视图中填充一个表。谢谢,但上面的其他类似解决方案也是如此。