2015-04-22 90 views
0

我有下面的CodeIgniter應用程序,其中我試圖讀取控制器中的外部JSON文件,並將其傳遞給我的模型函數getKey(),最後傳遞從該函數返回的數據以我的觀點。我不斷收到錯誤消息「PHP解析錯誤:語法錯誤,意外'$ this'(T_VARIABLE),期待函數(T_FUNCTION)」,我不確定是什麼導致它。我新使用CodeIgniter,所以任何幫助表示讚賞。從控制器傳遞JSON數據到模型

我的控制器:

class Test extends CI_Controller{ 
    public function __construct(){ 
     parent::__construct(); 
    } 

    var $test_id = 1; 
    var $json_key; 
    $this->load->model('Test_model'); 

    $json_key = $this->test_model->getKey($test_id); 
    $json_key = json_decode($json_key); 
    $data['test_key'] = $json_key; 

    $this->load->view('test_view', $data); 
} 

我的模型:

class Test_model extends CI_Model{ 
    var $image_array = array(); 
    var $test_key = array(); 
    var $test_name = ''; 

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

    public function getKey($test_id){ 
     switch($test_id){ 
      case 1: 
       $test_name = "sample1"; 
       break; 
      case 2: 
       $test_name = "sample2"; 
       break; 
      case 3: 
       $test_name = "sample3"; 
       break; 
     } 

     $image_array = file_get_contents('../files/' . $$test_name . '_key.json'); 
     $test_key = shuffle($image_array); 

     return $image_array; 
    } 
} 

我的看法:提前

<html> 
    <head> 
    <title>Test</title> 
    </head> 
    <body> 
    <h1>Test Screen</h1> 
    <?php print_r($test_key); ?> 
    <?php print_r($json_key); ?> 
    </body> 
</html> 

感謝。

回答

1

你的控制器是錯誤的。你的代碼應該在一個函數中。事情是這樣的:

class Test extends CI_Controller 
{ 
    public function __construct() 
    { 
    parent::__construct(); 
    } 

    function index() 
    { 
    $this->load->model('Test_model'); 

    $test_id = 1; 
    $json_key = $this->test_model->getKey($test_id); 
    $json_key = json_decode($json_key); 
    $data['test_key'] = $json_key; 

    $this->load->view('test_view', $data); 
    } 
} 
+0

這絕對是正確的,但是,在進行更改後,我仍然得到了同樣的錯誤,但現在它不再指定$此變量,而是指向上線「變種」 10.任何想法爲什麼? – jldavis76

+0

'var'不能在函數中。你可以放棄'var'。這裏不需要類成員變量。你可以使用一個局部變量。我會更新我的答案。 – Mischa

+0

謝謝,這有效! – jldavis76

相關問題