Codeigniter - Как создавать виджеты / модули боковой панели, т.е. встраивать содержимое другого контроллера в представление - PullRequest
1 голос
/ 22 июля 2010

Я рвал себе на это волосы около 3 часов, пожалуйста, кто-нибудь может помочь?

Вот чего я хочу достичь ...

На моей домашней странице я хочучтобы иметь виджет / модуль боковой панели, который отображает последние 10 событий из контроллера событий.

Я начал пытаться использовать плагин виджета, но не смог обойти его - [url = http://codeigniter.com/forums/viewthread/109584/#552597]Plugin widget [/ url]

Далее я прочитал о расширении стандартного контроллера до MY_Controller, поэтому в MY_Controller я добавил код из моего контроллера событий, который извлекает последние события, используя модель событий, я предполагаю, что этоправильное место для этого?

содержимое MY_Controller

[код] функция home_events () {

       // load library
    $this->load->library(array('table','validation','template'));

    // load helper
    $this->load->helper('url', 'form');

    // load model
    $this->load->model('event_model','',TRUE);
    $this->load->model('location_model','',TRUE);

   $data['base'] = $this->config->item('base_url');
    // offset
    $uri_segment = 3;
    $offset = $this->uri->segment($uri_segment);

    // load data
    $events = $this->event_model->get_paged_list($this->limit, $offset)->result();

    // generate pagination
    $this->load->library('pagination');
    $config['base_url'] = site_url('event/index/');
     $config['total_rows'] = $this->event_model->count_all();
     $config['per_page'] = $this->limit;
    $config['uri_segment'] = $uri_segment;
    $this->pagination->initialize($config);
    $data['pagination'] = $this->pagination->create_links();


    // generate table data
    $this->load->library('table');
    $this->table->set_empty(" ");
    $this->table->set_heading('Name', 'Location', 'Date', 'Image', 'Actions');
    $i = 0 + $offset;
    foreach ($events as $event){
        $this->table->add_row($event->name, $event->location, $event->date, $event->image_url,
            anchor('event/view/'.$event->id,'view',array('class'=>'view'))
        );
    }
    $data['table'] = $this->table->generate();

 $data['home_events_view']    = $this->load->view('home_events', $tmp_data, TRUE);
 $this->load->view('home', $data); 
    }
//end function home_events
[/code]

Далее в моем домашнем виде я пытаюсь загрузить home_events_viewсо следующим -

<?php echo $home_events_view; ?>

Когда я загружаю домашнюю страницу, я получаю следующую ошибку - Сообщение: неопределенная переменная: home_events_view Имя файла: views / home.php

Должен ли я подойтиПравильно ли это? Кто-нибудь может определить, где я ошибся?Я предполагаю, что мне нужно поместить что-то в мой домашний контроллер, чтобы получить данные о событиях?

Любая помощь была бы признательна, я недавно узнал так много о codeigniter, и мне это нравится, но встраивание представлений было большимЗагвоздка!

Спасибо, Дэн

1 Ответ

2 голосов
/ 22 июля 2010

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

В вашем контроллере Передайте данные для соответствующих компонентов вашей страницы в виде многомерного массива.1006 *

В вашем представлении Просто передайте массив событий обратно в $ data и загрузите представление.

<?php
$data['home_events_view'] = $home_events_view;

$this->load->view('home_events', $data);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...