Почему мои данные не передаются на мой взгляд правильно? - PullRequest
2 голосов
/ 30 марта 2010

У меня модель, представление и контроллер не взаимодействуют правильно, и я не знаю, где находится ошибка.

Во-первых, контроллер. Согласно документации Code Igniter , здесь я правильно передаю переменные.

function view() {
        $html_head = array( 'title' => 'Estimate Management' );

        $estimates = $this->Estimatemodel->get_estimates();

        $this->load->view('html_head', $html_head);
        $this->load->view('estimates/view', $estimates);
        $this->load->view('html_foot');
    }

Модель (короткая и сладкая):

function get_estimates() {
        $query = $this->db->get('estimates')->result();
        return $query;
    }

И, наконец, представление, просто для печати данных для начальных целей разработки:

<? print_r($estimates); ?>

Теперь это не определено, когда я перехожу на эту страницу. Однако я знаю, что $ query определен, потому что он работает, когда я запускаю код модели прямо в представлении.

Ответы [ 2 ]

2 голосов
/ 30 марта 2010
$estimates = $this->Estimatemodel->get_estimates();
$this->load->view('estimates/view', $estimates);

Вы загружаете возвращаемое значение $this->Estimatemodel->get_estimates() как массив переменных представления. Другими словами, все дочерние элементы $estimates (при условии, что их можно рассматривать как массив) доступны в вашем представлении. Но не родительский элемент.

Ключ здесь заключается в том, что при загрузке представления второй параметр должен быть массивом значений , а не только одним значением.

$this->load->view('estimates/view', array('estimates' => $estimates));

Это должно получить результат, который вы ищете, фактически вы уже делаете это для представления заголовка html. Несмотря на то, что это представление имеет только одну переменную, оно передается как единственный элемент массива:

$html_head = array( 'title' => 'Estimate Management' );
$this->load->view('html_head', $html_head);
2 голосов
/ 30 марта 2010

Документация показывает, что объект, который вы передаете представлению, должен быть ассоциативным массивом.

$data = array(
   'estimates' => $estimates
);

$this->load->view('estimates/view', $data);

Документы здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...