0

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

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

此外,如果我有一个带有表数据的对象,在视图中使用该对象,使用 for 循环并显示数据是否很好,还是有更好的方法?谢谢

PS我是codeigniter的新手

4

1 回答 1

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;
?>
于 2013-08-22T06:55:35.660 回答