загрузить файл вида внутри функции в php / codeigniter

У меня есть функция, которую я хотел бы подключить к файлу вида. Это довольно просто, когда вам просто нужно echo одну или две вещи, но у меня есть сложный html, и поэтому я хотел бы воспользоваться альтернативным синтаксисом php для следующих циклов foreach и if:

UPDATE Я исправил представление CI->load->view чтобы включить третий параметр в соответствии с предложением tpaksu. Он ближе к работе, но все еще не совсем прав. См. Комментарии ниже в коде:

 <? function displayComments(array $comments, $parentId = null) { $CI=& get_instance(); foreach($comments as $comment){ if($comment['replied_to_id'] == $parentId){ echo $CI->load->view('reviews/comment_list', $comments, true); // this doesn't work, it only shows the last array member // echo $comment['comment']; this works as expected } } } displayComments($comments, $parentId = null); ?> 

Вот что выглядит «просмотр / просмотр списка комментариев» в его простейшей форме:

 <ul> <? foreach($comments as $comment): $comment=$comment['comment']?> <li> <?echo $comment?> </li> <?endforeach;> </ul> 

Кто-нибудь знает, как встраивать файлы просмотра в функцию?

Обычно я использую snippet_helper в своих проектах. Там у меня много функций, которые генерируют куски многоразовых вещей (также называемых модулями или компонентами ).

Мне также нравится подход WordPress, который используется для возврата данных в основную функцию (вам может потребоваться больше обработок перед отображением) и «сестринская функция», чтобы напрямую echo результаты.

Я думаю, это сработает с тобой. Например:

 function get_display_comments(array $comments, $parentId = NULL) { $CI =& get_instance(); $return = ''; foreach ($comments AS $comment) { if ($comment['replied_to_id'] == $parentId) { $return .= $CI->load->view('reviews/comment_list', $comments, TRUE); } } return $return; } function display_comments(array $comments, $parentId = NULL) { echo get_display_comments($comments, $parentId); } 

Ваш контент в первом файле:

 <?php $CI=& get_instance(); echo $CI->load->view('reviews/comment_list', $comments, true); ?> 

И reviews/comment_list :

 <ul> <?php foreach($comments as $comment){ $comment=$comment['comment']; echo "<li>" . $comment . "</li>"; } ?> </ul> 

просто напишите это и повторите попытку.