class SelectedModel extends CI_Model {
var $title = 'SelectedModel';
var $content = 'get top n articles';
var $date = '23.2.2011';
function __construct()
{
parent::__construct();
}
function getTopArticles()
{
$result = $this->db->query('select top 5 article from articles;');
if( ! $result->num_rows() > 0 )
die('There are no articles in db.');
return $result;
}
}
class Front extends CI_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$this->load->database();
$this->load->helper(array('text', 'html'));
$this->load->model('SelectedModel');
// controller process data and validate it
$top_articles = $this->SelectedModel->getTopArticles();
foreach($top_articles->result() as $item)
{
$item->desc = character_limiter($item->desc, 75);
if( strlen($item->image) == 0 )
$item->desc = '/images/default.png';
}
$data['title'] = 'title';
$data['random_articles'] = $top_articles;
$this->load->view('front', $data);
}
}
前视图:
php foreach($random_articles->result() as $item):
php echo $item->desc
php echo br() . $item->image
php endforeach;
我想知道我对MVC的了解是否正确。在控制器I处理数据,准备他们在视图中显示它们。在视图中,只有html / css代码和echo $ var的空间。 模型函数是获取数据。
是否还有其他处理数据的方法。我的方式好吗?
优化问题: $ top_articles = $ this-> SelectedModel-> getTopArticles(); 我不知道php究竟是如何管理这一行的。我只是问$ top_articles是否是getTopArticles的副本,所以如果我在我的视图中使用,我会使用两倍的内存:
前视图:
php foreach($random_articles->result() as $item):
php echo character_limiter($item->desc, 75)
php echo br() . if( strlen($item->image) == 0 ) echo images/default.png''; else echo $item->image;
php endforeach;
但是使用这种方法我不使用MVC(在视图中使用character_limit,....)。
答案 0 :(得分:0)
我认为你明白了这个想法。 MVC方法并不总是意味着它更好地优化。
在模型中生成数据,将其传递给控制器,然后传递到视图是正确的方法,即使看起来好像你可以从视图中完成所有操作码。