【问题标题】:codeigniter, echo data from model to view PHPcodeigniter,从模型回显数据以查看 PHP
【发布时间】:2017-04-10 05:15:52
【问题描述】:

我查看了该站点上的所有相关数据,试图找到适合我的解决方案,但我还没有找到。在用尽我所有的选择(尝试)之后,我已经在这几个小时了。我终于决定寻求帮助。我需要将模型中的数据回显到视图,以查看我是否正确执行此操作(测试)。我正在尝试自己学习这个框架(Codeigniter)。我有以下设置...

控制器

<?php
class csv extends CI_Controller
{
public $data;
public function __construct()
{
    parent::__construct();
    $this->load->model('csvToJson');
    $this->load->helper('url');
}
function index()
{
    $this->load->view('uploadCsvForm');

}
function uploadData()
{
    $this->csvToJson->uploadData();
    redirect('csv');

}
}
?>

型号

<?php
// php class to convert csv to json format
class csvToJson extends CI_Model{

function __construct()
{
    parent::__construct();
}

function uploadData()
{
    $fp = fopen($_FILES['userfile']['tmp_name'],'r') or die("can't open file");

    //read csv headers
    $key = fgetcsv($fp,"1024",",");

    // parse csv rows into array
    $json = array();
    while ($row = fgetcsv($fp,"1024",",")) 
    {
        $json[] = array_combine($key, $row);
    }

    fclose($fp) or die("can't close file");
    return json_encode($json);

}
}// end class
?>

查看

 <form action="<?php echo site_url();?>csv/uploadData" method="post" 
 enctype="multipart/form-data" name="form1" id="form1"> 
<table>
    <tr>
        <td> Choose a CSV file: </td>
        <td>
            <input type="file" class="form-control" name="userfile" 
              id="userfile"  align="center"/>
        </td>
        <td>
            <div class="col-lg-offset-3 col-lg-9">
                <button type="submit" name="submit" class="btn btn-
                 info">upload</button>
            </div>
        </td>
    </tr>
</table> 

</form>

任何帮助将不胜感激

【问题讨论】:

标签: php codeigniter


【解决方案1】:

要在视图上查看数据,您需要通过控制器传入

function uploadData()
{
$data = $this->csvToJson->uploadData();
$this->load->view('uploadCsvForm',$data);
}

【讨论】:

  • 只需要在视图中回显我的 json 数据,这样我就可以测试并确保其正常工作。
  • 更新为:函数uploadData() { $data = $this->csvToJson->uploadData(); //$this->csvToJson->uploadData(); $this->load->view('uploadCsvForm',json_encode($data));重定向('csv'); } 并出现错误:遇到 PHP 错误消息:未定义变量:数据文件名:views/uploadCsvForm.php 行:19 uploadCsvForm.php 行:19
  • 将其更改为$data['anyName']=$this-&gt;csvToJson-&gt;uploadData() 并在您的视图中访问$anyName
【解决方案2】:

您需要在调用视图的函数中获取数据,然后将该数据传递给视图。例如在你的控制器中

public function index()
{
  $data['files']=$this->yourModel->getDataFunction();
  $this->load->view('path/to/your/view',$data);
}

在你的模型中

public function getDataFunction()
{
  return $this->db->query('your query')->result();
}

在你的视野中

<?php foreach($files as $file){?>
      <h2><?php echo $files['title']?></h2>
<?php endforeach?>

对于文件上传或表单发布,您可能想查看 Form ValidationFile Uploading Class

【讨论】:

    【解决方案3】:

    好的,可以使用以下内容:

    控制器中:

    function uploadData()
    {
        $data['json'] = $this->csvToJson->uploadData();
        $this->load->view('uploadCsvForm',$data);
    }
    

    查看

    <?php
    $data = json_encode($json, JSON_PRETTY_PRINT);
    echo $data;
    ?>
    

    看起来我们也不错,csv 正在解析为 JSON

    【讨论】:

    • 你不能在你的控制器中做 $this-&gt;load-&gt;view('uploadCsvForm', json_encode($data, JSON_PRETTY_PRINT)); 而不必乱来在视图中?
    猜你喜欢
    • 1970-01-01
    • 2012-02-26
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多