2015-04-22 3 views
0

У меня есть следующее приложение CodeIgniter, в котором я пытаюсь прочитать внешний контроллер JSON в контроллере и передать его в мою модельную функцию getKey() и, наконец, передать данные, возвращенные из этой функции на мой взгляд. Я продолжаю получать сообщение об ошибке «Ошибка PHP Parse: синтаксическая ошибка, неожиданная« $ 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

Смежные вопросы