【问题标题】:Passing Variables to view page in codeigniter传递变量以在 codeigniter 中查看页面
【发布时间】:2014-07-20 19:00:24
【问题描述】:

我正在尝试将 2 个变量传递给表单页面。

第一个是对表单字段的查询,第二个是错误变量。

加载页面时出现以下错误:

遇到 PHP 错误

严重性:通知
消息:未定义的变量:错误
文件名:views/upload_form.php
行号:7

这是我的控制器:

<?php

class Upload extends CI_Controller {

    function __construct()
    {
        parent::__construct();
        $this->load->helper(array('form', 'url'));
        $this->load->database();

    }

    function index()
    {
        $this->load->helper('url');
        $this->load->model('Image_model');

        $data['query'] = $this->Image_model->image_biz();

        $this->load->view('upload_form', $data, array('error' => ' ' ));
    }

    function do_upload()
    {

        $config['upload_path'] = dirname($_SERVER["SCRIPT_FILENAME"]).'/uploads/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '200';
        $config['max_width']  = '1024';
        $config['max_height']  = '768';

        $this->load->library('upload', $config);

        if ( ! $this->upload->do_upload())
        {
            $error = array('error' => $this->upload->display_errors());

            $this->load->view('upload_form', $error);

        } else {

            $image_data = array('upload_data' => $this->upload->data());

            // can be add extra feature here.

            $insert_data = array(
                    'image_file' => $image_data['upload_data']['file_name'],
                    'image_path' => $image_data['upload_data']['full_path'],
                    'image_ext' => $image_data['upload_data']['file_ext'],
                    'image_width'=> $image_data['upload_data']['image_width'],
                    'image_height' => $image_data['upload_data']['image_height'],
                     );

            $this->db->insert('image', $insert_data);//load array to database

            $this->load->view('upload_success', $image_data);

        }

    }
}
?>

这是我的查看页面“upload.php”:

    <html>
<head>
<title>Upload Form</title>
</head>
<body>

<?php echo $error;?>

<?php echo form_open_multipart('upload/do_upload');?>

Image: <input type="file" name="userfile" size="20" /><br>
<label for="select">Business ID:</label>
<select name="image_bizID">
    <?php foreach ($query->result() as $row) { ?>
        <option value=""><?=$row->biz_id;?></option>
    <?php } ?>
</select>

<br /><br />

<input type="submit" value="upload" />

</form>

</body>
</html>

任何帮助解决此错误将不胜感激。

谢谢。

【问题讨论】:

    标签: mysql codeigniter codeigniter-form-helper


    【解决方案1】:

    Undefined variable: error 表示有一个名为error 的变量未定义。

    在你看来,你有这行:

    <?php echo $error;?>
    

    这需要在您的控制器中设置$image_data['error'],因为控制器中的$image_data['error'] 在视图中变为$error

    要修复它最简单的方法,只需将其分配给控制器中的一个空字符串:

    $image_data['error'] = '';
    

    或者只是检查它是否首先在视图中设置:

    <?php 
    if (isset($error))
        echo $error;
    ?>
    

    还有一些方法可以通过适当地设置error_reporting 来忽略通知,或者只是在视图中像这样抑制该行上的错误:

    <?php @echo $error; // notice @ before echo ?>
    

    但解决问题总是比忽略它好。


    更新

    刚刚注意到,您以错误的方式传递变量。所以这个:

    function index()
    {
        $this->load->helper('url');
        $this->load->model('Image_model');
    
        $data['query'] = $this->Image_model->image_biz();
    
        $this->load->view('upload_form', $data, array('error' => ' ' ));
    }
    

    应该是:

    function index()
    {
        $this->load->helper('url');
        $this->load->model('Image_model');
    
        $data['query'] = $this->Image_model->image_biz();
        $data['error'] = '';
    
        $this->load->view('upload_form', $data);
    }
    

    您传递的所有内容都应该在一个单个数组或对象中,因此$data['query']$data['error'] 是正确的方式,因为我们只发送$data 数组。加载视图函数中的第三个参数用于将视图作为字符串返回,而不是渲染它,所以你不想在这种情况下使用它。

    在此处阅读有关视图的更多信息:http://ellislab.com/codeigniter/user-guide/general/views.html

    【讨论】:

    • 谢谢。那行得通。现在,如果我测试错误(IE。上传错误的文件类型),我会收到以下错误:

      遇到 PHP 错误

      严重性:通知

      消息:未定义的变量: 查询

      文件名:views/upload_form.php

      行号:14


      致命错误:调用到 /Applications/XAMPP/xamppfiles/htdocs/tsq/application/views/upload_form.php 中的非对象的成员函数 result() 第 14
  • 同样的事情,但这次 $query 未定义,而不是 $error
  • 【解决方案2】:

    只需在索引函数中更改这些行

    $data['error']='';
    $this->load->view('upload_form', $data); 
    

    您可以选择传递第三个参数,它是布尔数据。

    或者你可以只使用isset函数来检查错误变量是否被设置

    参考链接:http://php.net/manual/en/function.isset.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-06
      • 2017-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多