CI:未定义的变量

时间:2011-07-25 21:34:59

标签: codeigniter variables undefined

我知道有类似的问题,但我仍然无法解决我的问题。当我的视图加载时,我收到下面的错误,我知道$ id中有一个值。

消息:未定义的变量:id 文件名:admin / upload_form.php 行号:17

控制器:

public function getEventNameById( $id ) {
            $q = $this->event_model->getEventNameById( $id );            
            echo "Event Name: ".$q."</p>";
            $data['id'] = $id;            
            $this->load->view('admin/upload_form',array('error' => ' ' ), $data);
}

查看:

<body>
<div>
<?php echo $error;?>
<p>Event Image:</p>
<?php echo form_open_multipart('admin_upload/do_upload');?>

<input type="file" name="userfile" size="20" />
<br /><br />
<input type="hidden" id="iEventID" name="iEventID" value="<?php echo $id;?>" />
<input type="submit" value="upload event image" /> <input type="button" value="close" 
onclick="window.close()">

</form>
</div>
</body>

我需要做的是基于ID的查询信息,然后将该ID传递给我的视图,然后将ID传递回不同的控制器函数以用于更新数据库中的记录。换句话说,我需要始终坚持身份证。

非常感谢任何和所有的帮助。

1 个答案:

答案 0 :(得分:1)

您错误地传递了视图数据:

您的代码传递了3个参数:

$this->load->view('admin/upload_form', array('error' => ' ' ), $data);
//                |        1         |            2          |   3   |

您应该将所有数据传递给第二个参数:

$this->load->view('admin/upload_form', array('error' => ' ' ) + $data);
//                |        1         |                  2             |

第三个参数应该是一个布尔值,无论是否直接打印数据(默认false)或将其存储在变量(true)中。

我刚刚使用+运算符来组合数组,但使用它可能会更清晰:

$data['error'] = ''; // Not sure why this is needed, but I assume it is
$data['id'] = $id;   
$this->load->view('admin/upload_form', $data);

发生的事情是你的$data数组没有传递给视图,因此是未定义的变量。

参考:http://codeigniter.com/user_guide/libraries/loader.html