У меня есть функция, которую я хотел бы подключить к файлу вида. Это довольно просто, когда вам просто нужно 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>
просто напишите это и повторите попытку.