Если вы хотите придерживаться шаблона MVC (и я бы посоветовал вам сделать это, так как это упрощает управление вашим приложением или обновляет его внешний вид), тогда сделайте следующее:
Вместо этогоиз echo
, извлекая всю информацию о новостях, сохраняйте ее в массив и передавайте этот массив в VIEW.Позвольте VIEW затем просто пройти через этот массив (новостей и связанных комментариев) и вывести его.
Таким образом, ваша логика для сборки этой структуры новостей / комментариев остается в контроллере, а представление просто выплевывает данные, и НЕ ITERATE через объект $query
.
Это создает чистое разделение контроллера, модели и вида.
Пример:
foreach ($query as $news)
{
$comments = $this->db->select('id_comment, id_news')->where('id_news', $news->id)->get('comments');
$data['news'][$news->id]['title'] = $news->title;
$data['news'][$news->id]['content'] = $news->content;
$data['news'][$news->id]['num_comments'] = $comments->num_rows();
if($data['news'][$news->id]['num_comments'] > 0){
foreach ($comments as $entry){
$data['news'][$news->id][$entry->id]['comment'] = $entry->content;
}
}
}
Что касается вашей проблемы с маршрутизацией, вам необходимо правильно направить URI к МЕТОДУ в вашем контроллере:
$route['tags/(:any)'] = "news/tags/$1";
$route['(:any)'] = "news/posts/$1";
$route['(:any)']
, который я лично не пробовал, , но Я бы посоветовал вам отформатировать ваш URI, например, http://domain.com/post/name-of-post
, а не http://domain.com/name-of-post
, он будет более чистым для маршрутизации, оставляя его отдельным, потому что вышеприведенный маршрут $route['(:any)']
заставляет вас создавать CUSTOM-маршруты (белый список) для всего остального, как теги / ссылки / пользователи / и т. д .;