2013-07-30 4 views
0

Я сегодня наткнулся на логическую проблему с помощью Codeigniter. Через 4 часа я подумал, что лучше спросить здесь.Codeigniter: нужно вызвать функцию контроллера из окна

Моего проекта на главной странице портала:

  • Лучших сообщения (атрибуты: название, логотип, Отрывок)
  • Top Комментариев для каждого сообщения (атрибуты: имя-участника Аватар)

Моя проблема заключается в получении лучших комментариев для каждого сообщения.

Если я не использую код воспламенителя это то, как я буду это делать:

<?php 
foreach($posts as $post) { 
    echo 'Post Title: '.$post['title'].'<br/>'; 

    $top_commenters = $this->get_top_commenters($post['id']); 
    foreach($top_commenters as $commenter) { 
     echo '<img src="'. $commenter['avatar'] .'"/><br/>'; 
    } 
} 

?> 

Я думаю, вы заметили, что я передаю каждый Пост идентификатор функции, чтобы получить ее топ комментаторов. Однако в CodeIgniter я не могу вызвать контроллер из представления.

Одним из последних решений, которые я бы использовал, является Ajax. Но я надеюсь, что мне поможет.

Спасибо заранее!

UPDATE: в соответствии с просьбой, вот моя функция модели и функции контроллера:

//Model Function 
function get_popular_posts() { 

    $row = $this->db->query(' 
     SELECT * FROM posts 
     INNER JOIN popular_posts ON posts.id = popular_posts.pid 
     ORDER BY rank DESC LIMIT 6 
    '); 

    return $row->result_array(); 
} 

//Model Function 
function get_top_commenters($post_id){ 

    $row = $this->db->query(' 
     SELECT * 
     FROM users 
     WHERE username 
     IN (
     SELECT username 
     FROM comments WHERE pid = '. $post_id .') 
     ORDER BY likes DESC LIMIT 6 
    '); 

    return $row->result_array(); 
} 
+0

Можете ли вы показать мне свой контроллер и функцию модели, которую вы используете для получения сообщений? – bottleboot

+0

Просьба пояснить, почему http://stackoverflow.com/questions/9986520/how-to-call-codeigniter-controller-function-from-view?rq=1 и http://stackoverflow.com/questions/16366130/calling- a-controller-function-from-a-view-in-codeigniter? rq = 1 и http://stackoverflow.com/questions/11682604/how-to-call-function-of-controller-in-view-using- codeignator не отвечает на ваш вопрос. – Gordon

+0

Я знаю почему! но мне нужна помощь для работы. – Sobiaholic

ответ

-6

вы можете вызвать любой контроллер с точки зрения: URL Пример:

<a href="controller_name/controller_function"> My URL </a> 
+1

Это не вызов контроллера. Это связано с контроллером. – Gordon

+1

Это просто ссылки на контроллер (и, в свою очередь, его вид). -1 – BenM

+0

Проблема в том, что вам нужно, чтобы пользователь запускал функцию контроллера, но нам нужно получить результат при загрузке представления, вызвав метод из другого класса и получив его результат. – Dipen

1

Почему вы хотите позвонить контроллер функции из ваших представлений? К тому времени, когда вы создаете файл своего вида, вся ваша обработка данных должна быть уже выполнена.

Пропустите $ top_commenters на ваш взгляд в контроллере.

+0

Я обновил свой вопрос, пожалуйста, проверьте его. – Sobiaholic

Смежные вопросы