在php / codeigniter中的函数中加载视图文件

时间:2012-04-30 05:22:53

标签: php codeigniter

我有一个函数,我想插入一个视图文件。当你需要echo一两件事时,这很简单,但是我有一些复杂的html,所以想利用替代的php语法来进行下面的foreach循环和if语句:

更新我根据tpaksu的建议更正了CI->load->view以包含第3个参数。它更接近工作但仍然不太正确。请参阅以下代码中的注释:

<?
  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>

有人知道如何将视图文件嵌入到函数中吗?

2 个答案:

答案 0 :(得分:1)

您在第一个文件中的内容:

<?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>

只需写下来再试一次。

答案 1 :(得分:1)

我通常会在项目中使用 snippet_helper 。在那里,我有许多函数可以生成大量可重用的东西(也称为 modules components )。

我也喜欢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);
}