【发布时间】:2019-12-26 06:39:53
【问题描述】:
我的控制器类似于
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 传递给 Controller 函数作为参数;
- 在 Controller 中使用 $id_1 和 $id_2 查询;
- 将查询数据传递给 View。
有没有办法在不加载视图两次的情况下实现这一点?
更新:我已经尝试过这些:
- 从 create_room() 中移除 load->view(没有 $data 从视图传递到控制器)
【问题讨论】:
-
您通过 $this->load->view('viewFilePath', $data) 加载了两次视图。从 form_validation->run() 条件中删除此代码。
-
@RahatHameed 我确实尝试过,但视图没有运行,因为我需要使用 $data 来填充视图中的表,并且没有 $data 从控制器传递到视图。我看到我在原帖中没有提到,会更新,不过谢谢你的回复。
-
"theURL" 由一个控制器和一个函数(除了参数)组成,对吧?所以你需要做的就是把表单验证放在那里。
标签: php codeigniter