我们应该在CodeIgniter应用程序中的什么地方处理mysql查询?
例如,在一个简单的项目中,我们这样做:
对于控制器:
class Blog extends CI_Controller {
function posts(){
$data['query'] = $this->blog_model->index_posts();
$this->load->view('blog_view', $data);
}
}
并着眼于:
<?php
while ($post = mysql_fetch_object($query)):
?>
<div>
<p><?= $post->body; ?></p>
</div>
<?php endwhile; ?>
但是,如果我们想在打印前对帖子正文做一些事情,应该在哪里做?
例如,我想编写一个函数来格式化 post 的正文,并在执行 echo 之前将正文传递给它。
根据CoeIgniter的结构和推荐的做法,它应该放在哪里?(最佳选择)
- 在控制器中?(如果是这样,如何使用它)
- 在视图中?
- 写一个助手?
- 其他方法 ?
以下是建议的内容:
控制器:
function posts() {
$this->load->model("blog_model");
$data['rows'] = $this->blog_model->index_posts();
$this->load->view("blog_view", $data);
}
型号: (blog_model.php)
function index_posts() {
$this->load->database();
$query = $this->db->get('your_table');
$return = array();
foreach ($query->result_array() as $line) {
$line['body'] = ... do something with the body....
$return[] = $line;
}
return $return;
}
查看: (blog_view.php)
<?php foreach ($rows as $line): ?>
<div>
<p><?php echo $line['column']; ?></p>
</div>
<?php endforeach; ?>
基本上,您的模型返回一个多维数组,该数组通过视图并使用foreach()
循环进行处理。
祝你好运!
如果要
重用该函数,请创建一个帮助程序。如果您只需要此函数一次,请将其放入控制器并从该控制器调用。
模型仅用于访问数据库,或者在少数其他情况下,但主要用于访问数据库中的内容或编辑、删除等,并将结果发送到控制器进行进一步处理。
在你的情况下,我会坚持使用助手。
例如,您将创建一个文件top_mega_best_functions.php并将其放在帮助程序文件夹中。
比你写的,例如类似的东西
function red_text($input) {
echo '<span style="color: red;">';
echo $input;
echo '</span>';
}
然后在自动加载器文件中加载帮助程序,或者在使用前加载。
并在您的视图或控制器中使用,例如
$blablabla = "This text will be red";
red_text($blablabla);