2016-11-07 9 views
0

У меня есть следующий код модель:CodeIgniter-доступ от модели к контроллеру

<?php 
class Route_Model extends CI_Model 
{ 
    function __construct() 
    { 
     parent::__construct(); 
    } 

    public function getRoute($date = array()) 
    { 
     try { 
      $data = array(
       'route' => array(
        'id' => 1, 
        'name' => 'budapest-athens', 
        'price' => 150, 
        'id' => 2, 
        'name' => 'rome-madrid', 
        'pret' => 250, 
        'id' => 3, 
        'name' => 'belgrade-bucharest', 
        'price' => 180, 
        'id' => 4 
       ) 
      ); 
      return $data; 

     } catch (Exception $e) { 
      return $e->getMessage(); 
     } 
    } 

}?> 

И я хочу, чтобы получить доступ к элементам массива в моем контроллере.

Как я могу получить доступ к каждому полю отдельно?

Нечто вроде $price = $this->data['price']?

Спасибо!

ответ

2

Вы возвращаете массив с двумя уровнями, если вы хотите, чтобы получить price из массива $data, просто сделать это в вашем контроллере:

$data = $this->route_model->getRoute($date); 
$price = $data['route']['price']; 

Пожалуйста, обратите внимание, что ваш массив не хорошо сформирован, потому что вы повторили ключи, и это может вызвать проблемы

+0

Неопределенная переменная 'date' ...:/ –

+0

'$ date' - это переменная, которую вы определяете на свой' route_model' ... только вы знаете, что должно содержать – David

+0

спасибо David! + –

2

Этот массив никогда не будет работать, так как вы перезаписать ключи, я думаю, что вы хотите следующий массив:

$data = [ 
     'route' => [ 
      [ 
       'id' => 1, 
       'name' => 'budapest-athens', 
       'price' => 150 
      ], [ 
       'id' => 2, 
       'name' => 'rome-madrid', 
       'price' => 250 
      ], [ 
       'id' => 3, 
       'name' => 'belgrade-bucharest', 
       'price' => 180 
      ] 
     ] 
    ]; 

Рядом с этим, ваш try/catch кажется ненужным здесь, нет реальной попытки. Это жестко закодированный массив, поэтому, если это действительно не приведет к некоторым взаимодействиям, нет необходимости в try/catch.

Во всяком случае, получить эти данные в контроллере вы должны сделать:

$this->load->model('Route_model'); 
$route = $this->Route_model->getRoute(); 

var_dump($route); 
exit; 

Теперь вы будете иметь этот массив. Другое удивление, вы на самом деле пытаетесь захватить все маршруты в этом массиве, или есть что-то, что вы хотите сделать с параметром $date? Поскольку сейчас это выглядит не так, как если бы вы не удалили какой-то код.

+0

спасибо +1 @killstreet: D –

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