Codeigniter:视图应该是可重用的

时间:2013-08-22 06:33:26

标签: codeigniter views

在MVC模式中,视图是否需要可重用。通过视图输出数据时是否有任何原则或要点需要注意。

因此,如果我有一定数量的文本和一个包含3列的表的视图,并且如果我需要另一个视图,如文本会有点不同而且有4列的表,那么我应该使用变量将表结构存储在模型本身中,然后通过控制器将其传递给视图, 要么 使用变量来改变视图中的执行流程, 或者最好定义一个新视图?

此外,如果我有一个表数据的对象,如果在视图中使用该对象,使用for循环并显示数据或有更好的方法,该怎么办?感谢

P.S我是codeigniter的新手

1 个答案:

答案 0 :(得分:0)

如果要显示2个表中的数据并且所需的输出不同,我建议您使用2个视图。在您的模型中,您应该创建函数来获取所有必要的数据,然后将其传递给控制器​​。在控制器中,您应该将它们分配给变量并将它们传递给视图。请参阅下面的示例。

tbl_articles
article_id    |     article_title           |       article_text    
      1          Title of article               Sample text of article
      2          Title of article no. 2         sample text of article no. 2

tbl_reviews
review_id     |    review_title      |     review_text      | review_rate   
     1           Title of review             Sample text           5 
     2           Title of review no. 2       Sample text 2         4

<强>控制器:

<?php 
class Site extends CI_Controller {
    public function articles()
    {
          $this->load->model('main_model');
          $data['articles']  = $this->main_model->get_articles();
          $this->load->view('articles', $data);
   }
public function reviews()
    {
          $this->load->model('main_model');
          $data['articles']  = $this->main_model->get_reviews();
          $this->load->view('reviews', $data);
   }
}

<强>型号:

<?php
class Main_model extends CI_Model {
   public function get_articles()
   {
        return $this->db->select('article_id, article_title, article_text')
                        ->get('tbl_articles')
                        ->result();
   }

public function get_reviews ()
   {
        return $this->db->select('review_id, review_title, review_text, review_rate')
                        ->get('tbl_reviews')
                        ->result();
   }
}

<强>查看:

- 文章视图:

<?php
if (count($articles) == 0):
   echo 'Nothing to show';
   else:
     foreach($articles as $article):
?>
    <h1><?php echo $article->article_title; ?></h1>
    <p><?php echo $article->article_text; ?></p>
<?php 
   endforeach;
endif;
?>

- 评论视图:

<?php
if (count($reviews) == 0):
   echo 'Nothing to show';
   else:
     foreach($reviews as $ review):
?>
    <h1><?php echo $ review -> review _title; ?></h1>
    <p><?php echo $ review -> review text; ?></p>
    <p>Rate of user: <?php echo review->review_rate; ?></p>
<?php 
   endforeach;
endif;
?>