Передача контроллера Ci в представление - PullRequest
1 голос
/ 24 декабря 2011

Как бы я назвал контроллер в представлении?Когда я использую код ниже, я ограничен форматированием HTML и CSS.Я мог бы использовать JQuery JSON, но это добавило работы.Есть идеи?

<?php
class home extends CI_Controller {
    function __construct() {
        parent::__construct();
    }
    function displayList() {
        $query = $this->db->query("SELECT * FROM data");
        foreach ($query->result() as $row) {
            echo $row->title . "<br>";
            echo $row->text;
        }
    }
    function index() {
        $this->load->view('home');
        $data['lists'] = $this->displayList();
    }
}
?>

Ответы [ 3 ]

4 голосов
/ 24 декабря 2011

Вы не вызываете контроллер в представлении. Вы передаете данные из контроллера в представление.

Как это:

function index() {
    $data = array();
    $data['lists'] = $this->displayList();
    $this->load->view('home', $data);
}

Теперь в вашем home представлении $lists будет значением displayList().

Кроме того, displayList echo выводит данные, но не возвращает их, поэтому $data['lists'] будет пустым. Вы должны return строка, чтобы представление могло echo это.

function displayList() {
    $str = ''
    $query = $this->db->query("SELECT * FROM data");
    foreach ($query->result() as $row) {
        $str .= $row->title . "<br>" . $row->text;
    }
    return $str;
}

P.S. Я обычно помещаю запросы БД в модель и заставляю их вызывать контроллер.

2 голосов
/ 24 декабря 2011

Вы отправите массив материала, который вы хотите, в качестве второго аргумента load->view

$data['lists'] = $this->displayList();
$this->load->view('home',$data);

Теперь вы можете получить к нему доступ с помощью $lists.

1 голос
/ 24 декабря 2011

Я думаю, что вы пытаетесь сделать это ...

<?php
class home extends CI_Controller {
    function __construct() {
        parent::__construct();
    }

    function displayList() {
        $query = $this->db->query("SELECT * FROM data");
        foreach ($query->result() as $row) {
            echo $row->title . "<br>";
            echo $row->text;
        }
    }

    function index() {
        $data = array();
        $data['lists'] = $this->displayList();
        $this->load->view('home',$data);
    }
}

?>

, затем вы можете использовать $lists в представлении для доступа к этим данным

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