Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter form_open()在将变量从控制器传递到视图时加载视图文件两次_Php_Codeigniter - Fatal编程技术网

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从视图传递到控制器)

您可以创建另一个函数存储并将以下代码移动到新函数。因为此代码将在您提交表单时运行。在form open中,使用store函数而不是create表单

$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']在视图中填充一个表。谢谢,但上面的其他类似解决方案也是如此。