cfanbo 发表于 2011-11-7 14:49:06

对于一些逻辑操作是放在控制器还是放在视图里?

模型:        function getRow($id=0) {
                $sql = "SELECT * FROM tbl_down WHERE aid=" . intval($id);
                $query = $this->db->query($sql);
                return $query->row_array();
        }
控制器:        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);
        }
视图:
<h1><?php echo $row['title']?></h1>
下载地址:<?php echo $row['uploadfile'];?>


正常访问的时候没有什么问题人.但参数id的值如何修改为一个不存在的值的话,就无法正常显示了.因为视图里用的是$row这个数组.但在控制器里取出来的为空.所以提示出错误信息:
A PHP Error was encountered

Severity: Notice

Message: Undefined index: uploadfile

Filename: views/down_view.php

Line Number: 3

不知道一些逻辑检查的代码是放在控制器里好还是视图里好.如果放在控制器里可能需要进行一些在不存在信息的情况下,构建一个空数组,才可以保存页面的正常显示.而放在视图里则比较的方面.但也有说视图里不能放逻辑代码.

shenma 发表于 2011-11-7 15:46:06

视图里可以放逻辑代码,只是比较少而已。

yuzhigang5460 发表于 2011-11-7 17:09:27

放在控制器好些。
控制器的目的就是协调数据与显示之间的逻辑,取不到数据时应该在控制器里做一些判断或跳转。

acabin 发表于 2011-11-11 13:45:18

看具体需求了
如果需求是为空就给个提示“我是空的”
该逻辑建议放在view
如果是为空则跳转
则放在控制器比较好
页: [1]
查看完整版本: 对于一些逻辑操作是放在控制器还是放在视图里?