2017-04-10 37 views
2

我已經瀏覽了本網站上的所有相關數據,試圖找到適用於我的解決方案,但是我還沒有找到。在耗盡我所有的選擇之後(嘗試),我已經呆了好幾個小時了。我終於決定尋求幫助。我需要將模型中的數據回顯到視圖中,以查看我是否正確地執行了此操作(測試)。我試圖學習這個框架(Codeigniter)我自己的。我有以下設置...codeigniter,回聲數據從模型到查看PHP

控制器

<?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> 

任何幫助,將不勝感激

+0

究竟你想展示在視圖? –

+0

https://www.codeigniter.com/user_guide/general/views.html#adding-dynamic-data-to-the-view – user4419336

回答

2

查看,你需要通過控制器傳遞的數據來看

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

只需要在視圖中回顯我的json數據,以便我可以測試並確保其加工。 – tomcc84

+0

更新爲:function uploadData() { $ data = $ this-> csvToJson-> uploadData(); // $ this-> csvToJson-> uploadData(); ('uploadCsvForm',json_encode($ data)); $ this-> load-> view('uploadCsvForm',json_encode($ data)); 重定向('csv'); } <?php echo json_encode($ data,JSON_PRETTY_PRINT); ?> 和得到一個錯誤:一個PHP錯誤遇到 消息:未定義變量:數據 文件名:視圖/ uploadCsvForm.php 線:19 uploadCsvForm.php 線:19 – tomcc84

+0

改變它'$數據['anyName'] = $ this-> csvToJson-> uploadData()'並在您的視圖中訪問'$ anyName' –

1

你需要讓數據在你的函數中,您呼叫的視圖,然後通過該數據來看。例如,在您的控制器

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

1

好吧,讓它與以下工作:

控制器

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

查看

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

看起來我們也很好,CSV是解析成JSON

+0

您是否可以在您的控制器中執行$this->load->view('uploadCsvForm', json_encode($data, JSON_PRETTY_PRINT));而不必在視圖中亂七八糟? – qwertzman