将JSON从控制器传递到codeigniter中的视图

时间:2016-09-20 12:06:02

标签: arrays json codeigniter

我做了一个API调用并收到了JSON格式的响应。

JSON:



{
  "Specialities": [
    {
      "SpecialityID": 1,
      "SpecialityName": "Eye Doctor"
    },
    {
      "SpecialityID": 2,
      "SpecialityName": "Chiropractor"
    },
    {
      "SpecialityID": 3,
      "SpecialityName": "Primary Care Doctor"
    }
  ]
}




控制器文件:



public function index(){
      $data= json_decode(file_get_contents('some_url'));
      $this->load->view('my_view',$data);
}




上面的代码不起作用,因为在视图中我无法访问嵌套对象属性。但是,我可以像这样回显控制器文件中的JSON属性:

控制器文件:



public function index(){

     $data=json_decode(file_get_contents('some_url'));
     foreach ($data as $key=>$prop_name){
        for($i=0;$i < count($prop_name);$i++){
          echo $prop_name[$i]->SpecialityID;
          echo $prop_name[$i]->SpecialityName;
        }
     }
}
&#13;
&#13;
&#13;

我的问题是如何传递此JSON以查看以及如何在视图文件中访问这些属性?

2 个答案:

答案 0 :(得分:2)

在控制器更改中,如

public function index(){
      $data['json_data']= json_decode(file_get_contents('some_url'));
      $this->load->view('my_view',$data);
}

并在视图中

echo "<pre>";print_r($json_data);

答案 1 :(得分:0)

根据Docs

  

数据通过数组或从控制器传递到视图   视图加载方法的第二个参数中的对象

     

以下是使用数组的示例:

因此您需要更改控制器中的代码

Controller.php

$data = array();
$data['myJson'] = json_decode(file_get_contents('some_url'));
$this->load->view('my_view',$data);

<强> my_view.php

<html>
....
<?php 
//Access them like so
print_r($myJson);
// Rest of your code here to play with json 
?>
....
</html>