[英]Using model in views / controller in codeigniter
我使用codeigniter进行Web开发。 随着学习的深入,我发现了一些其他问题,而这些问题我无法得到适当的逻辑实现。
我有一个article_controller.php
和一个视图article.php
。 我正在尝试在页面上显示所有文章标题。 (此代码仅用于测试目的)。
可以说我还有一个名为images
表,其中包含本文中使用的所有图像。 所以我可以在article.php
视图上使用images_m.php
模型。
Article_Controller.php
$data['articles'] = $this->article_m->get(); //gets all of the articles
$this->load->view('articles',$data);
Article.php
foreach($articles as $article):
echo $article->title;
$images = $this->images_m->get_by(array('article_id'=>$article->id)); //gets all the images for current article
foreach(images as $image):
echo "<img src='./uploads/".$image->filename ."'/>";
endforeach;
endforeach;
该代码工作得很好。 我在许多网站中都使用过类似的代码。 但是主要的问题是,我已经读过在视图中使用models
不是一个好主意。 在controllers
使用models
。
因此,如何在控制器中获取特定文章的图像。
在控制器中获取图像,并将图像对象与每个文章对象合并,并将其传递给视图
$articles= $this->article_m->get(); //gets all of the articles
foreach($articles as $article):
$article->article_images = $this->images_m->get_by(array('article_id'=>$article->id)); //gets all the images for current article
endforeach;
$data['articles']=$articles;
$this->load->view('articles',$data);
确保已将images_m
模型加载到控制器中
这样的东西(伪代码)可能起作用:
控制器:
$articles = $this->article_m->get();
$images = array();
foreach($articles as $article):
$images[$article->id] = array();
$article_images = $this->images_m->get_by(array('article_id'=>$article->id));
foreach($article_images as $image):
$images[$article->id][] = './uploads/'.$image->filename;
endforeach;
endforeach;
$data['articles'] = $articles;
$data['images'] = $images;
$this->load->view('articles',$data);
视图:
foreach($articles as $article):
echo $article->title;
foreach($images[$article->id] as $image):
echo "<img src='$image'/>";
endforeach;
endforeach;
基本上,只需执行与视图中相同的工作即可,而是在控制器中进行。 然后将其放入$data
数组并将其发送到视图。
编辑:我建议看@dianuj的答案:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.