用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2012|回复: 3
收起左侧

[讨论/交流] 对于一些逻辑操作是放在控制器还是放在视图里?

[复制链接]
发表于 2011-11-7 14:49:06 | 显示全部楼层 |阅读模式
模型:
PHP复制代码
        function getRow($id=0) {
                $sql = "SELECT * FROM tbl_down WHERE aid=" . intval($id);
                $query = $this->db->query($sql);
                return $query->row_array();
        }
复制代码

控制器:
PHP复制代码
        function view() {
                $id = $this->uri->segment(3);
                $this->load->model('Down_model');
                $data['row'] = $this->Down_model->getRow($id);
 
                $this->load->view('down_view', $data);
        }
复制代码

视图:
HTML复制代码
 
<h1><?php echo $row['title']?></h1>
下载地址:<?php echo $row['uploadfile'];?>
 
复制代码


正常访问的时候没有什么问题人.但参数id的值如何修改为一个不存在的值的话,就无法正常显示了.因为视图里用的是$row这个数组.但在控制器里取出来的为空.所以提示出错误信息:
HTML复制代码
A PHP Error was encountered
 
Severity: Notice
 
Message: Undefined index: uploadfile
 
Filename: views/down_view.php
 
Line Number: 3
复制代码


不知道一些逻辑检查的代码是放在控制器里好还是视图里好.如果放在控制器里可能需要进行一些在不存在信息的情况下,构建一个空数组,才可以保存页面的正常显示.而放在视图里则比较的方面.但也有说视图里不能放逻辑代码.
发表于 2011-11-7 15:46:06 | 显示全部楼层
视图里可以放逻辑代码,只是比较少而已。
发表于 2011-11-7 17:09:27 | 显示全部楼层
放在控制器好些。
控制器的目的就是协调数据与显示之间的逻辑,取不到数据时应该在控制器里做一些判断或跳转。
发表于 2011-11-11 13:45:18 | 显示全部楼层
看具体需求了
如果需求是为空就给个提示“我是空的”
该逻辑建议放在view
如果是为空则跳转
则放在控制器比较好

本版积分规则