Использовать массив в представлении codeigniter - PullRequest
1 голос
/ 23 июня 2011

Я новичок в codeIgniter и искал ответ на этот вопрос на форумах CI и в Google, и даже здесь ...

ОК. Я искал это и каждый раз, когда нахожу ответы на этоотносящийся к использованию foreach() для извлечения данных из массива, а затем что-то с этим делать в цикле foreach;это не то, что я хочу сделать.

Я создаю сайт, с помощью которого я хотел бы хранить информацию о сайте, такую ​​как заголовок сайта, описание, аннотация, ключевые слова и т. Д., В таблице базы данных всего одной строкой (вместо того, чтобы переходить на HTML и делатьэто там ..)

Пока у меня есть что-то подобное в моей модели:

    function getAll(){
    $q = $this->db->get('system');

    if($q->num_rows() > 0){
            return $q->row();
    }
}

в моем контроллере у меня есть:

function index(){
    $this->load->model("system_model");
    $data[] = $this->system_model->getAll();    
    $this->load->view('home', $data);
}

и, на мой взглядЯ хотел бы получить очень просто (html-теги являются только описательными):

   <title><?php echo $this->title; ?></title>
<description><?php echo $this->description; ?></description>

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

Возможно ли это вообще?

РЕДАКТИРОВАТЬ

У меня естьЯ поставил галочку в первом ответе, так как это поставило меня на правильный путь, чтобы найти решение (хотя оно не может быть на 100% правильным в его работе), чтобы заставить его работать, я последовал за ответом № 1, но затем, по мнениюсделал следующее:

<title><?php echo$system[0]->title; ?></title>

Ответы [ 2 ]

2 голосов
/ 23 июня 2011

Дайте массиву $ data [] имя ключа

function index(){
    $this->load->model("system_model");
    $data['mydata'] = $this->system_model->getAll();    
    $this->load->view('home', $data);
}

и в файле просмотра вы можете отображать или повторять, или что-то еще, основываясь на этом ключе

echo $mydata

или

foreach($mydata as $md){
echo $md
}

Лучший способ сделать запрос к базе данных в модели - это сделать следующее:

function get_user_by_id($id){
    $this->db->where('id', $id);
    $query = $this->db->get('users');
    $result = $query->result_array();
    return $result;
}
0 голосов
/ 23 июня 2011

Вот, пожалуйста:

В вашем контроллере используйте:

function index(){
    $this->load->model("system_model");
    $data = $this->system_model->getAll(); 

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

Ваш взгляд будет выглядеть следующим образом:

   <title><?php echo $title; ?></title>
<description><?php echo $description; ?></decription>

Кроме того, с вашим запросом к базе данных(в общем) используйте result () так как вам кажется, что вам нужно более одной строки:

   function getAll(){
    $q = $this->db->get('system');

    if($q->num_rows() > 0){
            return $q->result();
    }
...