Codeigniter

VenderiGross

Писатель
Регистрация
29 Окт 2011
Сообщения
7
Реакции
0
Здравствуйте, начал изучать фреймворк Codeigniter. Сразу же столкнулся с такой проблемой. Попытаюсь описать её суть.

Есть некая модель с такими функциями:

PHP:
    function index()/* Главная страница */
    {
                $config['base_url'] = 'http://fol.lc/news/';
                $config['total_rows'] = $this->db->count_all('news');
                $config['per_page'] = 5;
                $config['num_links'] = 5;
                $config['uri_segment'] = 2;
                $config['next_link'] = 'Далее;';
                $config['prev_link'] = 'Назад;';
                $config['first_link'] = 'Первое;';
                $config['last_link'] = 'Последнее;';
                $from = intval($this->uri->segment(2));
                $this->db->limit(5, $from);
                $this->db->order_by("date", "desc");
                $query_top  = $this->db->get('news');
                $this->pagination->initialize($config);
                $page_nav = $this->pagination->create_links();
                $count_comments = $this->db->count_all('comments', $from);
        $data = array(
            'page' => $page_nav,
            'count_comments' => $count_comments,
            'array_news' => $query_top->result_array()
        );
        return $data;
    }
 
    function latest_news() // Последние новости
    {
        $this->db->limit('5');
        $this->db->order_by('date', 'desc');
        $query_latest_news = $this->db->get('news');
        $data = array(
            'array_latest_news' => $query_latest_news->result_array()
        );
    }

Есть контроллер, который вызывает данную модель и функции.
PHP:
    public function index()/* Главная страница */
    {
        $this->load->model('Mnews');
        $data = $this->Mnews->index();
        $this->parser->parse('news/main', $data);
    }

Сам файл отображения:
HTML:
            {array_news}
                    <!-- POST -->
                    <article class="post row">
                        <div class="media-box span3">
                            <img src="<?php echo base_url(); ?>template/img/blog/{img}.jpg" alt="blog-post">
                            <div class="mask">
                      <a href="{id}" class="ico link"></a>
                                <h3 class="title">see full post</h3>
                            </div>
                        </div>
                   
                        <div class="span5">
                            <h2 class="post-title"><a href="<?php echo base_url(); ?>news/{category}/{id}">{title_news}</a><span class="category"><a href="#">{category}</a></span></h2>
                       
                            <div class="info">
                          <i>Автор:</i> <a href="#" class="author">{author}</a> <i>Дата:</i> <span class="date">{date}</span> <i>Комментарии:</i> <a href="#" class="comments">{count_comments}</a>
                            </div>
                       
                            <p>{short}</p>
                     
                            <div class="tags">
                          <i>Теги:</i> <a href="#">design</a>, <a href="#">thinking</a>, <a href="#">web</a>, <a href="#">html5</a>, <a href="#">css</a>
                            </div>
                        </div>
                    </article>
                    <!-- POST -->
{/array_news}
                {array_latest_news}
                    <div class="item">
                  <a href="<?php echo base_url(); ?>news/{category}/{id}" class="image-box"><img src="<?php echo base_url(); ?>template/img/blog/{img}.jpg" alt="blog-post"></a>
                        <div class="info">
                      <h4><a href="#">{title_news}</a></h4>
                      <p>{short}</p>
                        </div>
                    </div>
                    {/array_latest_news}

Но возникает вопрос, как мне вызвать сразу две функции из модели. Вся проблема заключается в том, что используется Template Parser и я не могу сделать так:
PHP:
    public function index()/* Главная страница */
    {
        $this->load->model('Mnews');
        $data['cto-to zdec'] = $this->Mnews->index();
        $data['cto-to zdec_2'] = $this->Mnews-> latest_news ();
        $this->parser->parse('news/main', $data);
    }

Надеюсь, что Вы меня поняли. Заранее спасибо.
 
Не очень понял суть вопроса, но возможно нужно использовать текучие интерфейсы? Для просмотра ссылки Войди или Зарегистрируйся

Пример кода на PHP (из вышеприведенной ссылки) :

PHP:
class Car {
private $speed;
private $color;
private $doors;
 
public function setSpeed($speed){
$this->speed = $speed;
return $this;
}
 
public function setColor($color) {
$this->color = $color;
return $this;
}
 
public function setDoors($doors) {
$this->doors = $doors;
return $this;
}
}
 
// Обычная реализация
$myCar2 = new Car();
$myCar2->setSpeed(100);
$myCar2->setColor('blue');
$myCar2->setDoors(5);
 
// Текучий интерфейс
$myCar = new Car();
$myCar->setSpeed(100)->setColor('blue')->setDoors(5);
 
В метод latest_news() добавьте return $data;
 
Суть проблемы в том, как вызвать сразу две функции из модели и через контроллер передать их результат работы во вьювер.
 
Попробуйте так:
PHP:
public function index() /* Главная страница */
{
$this->load->model('Mnews');
$index =  $this->Mnews->index();
$latestNews = $this->Mnews->latest_news();
$this->parser->parse('news/main', array_merge($index, $latestNews));
}
 
Назад
Сверху