在MVC模式中,视图是否需要可重用。通过视图输出数据时是否有任何原则或要点需要注意。
因此,如果我有一定数量的文本和一个包含3列的表的视图,并且如果我需要另一个视图,如文本会有点不同而且有4列的表,那么我应该使用变量将表结构存储在模型本身中,然后通过控制器将其传递给视图, 要么 使用变量来改变视图中的执行流程, 或者最好定义一个新视图?
此外,如果我有一个表数据的对象,如果在视图中使用该对象,使用for循环并显示数据或有更好的方法,该怎么办?感谢
P.S我是codeigniter的新手
答案 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;
?>