dwz+thinkphp 我的视图测试

1.数据库准备

CREATE TABLE `view1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `out_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=gbk;

INSERT INTO `view1` VALUES ('1', '落花', '1');
INSERT INTO `view1` VALUES ('2', '伤春', '3');
INSERT INTO `view1` VALUES ('3', '悲秋', '4');
INSERT INTO `view1` VALUES ('4', '隆冬', '2');
INSERT INTO `view1` VALUES ('5', '梨花落尽', '6');

CREATE TABLE `view2` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=gbk;

INSERT INTO `view2` VALUES ('1', '可惜不是你');
INSERT INTO `view2` VALUES ('2', '天使');
INSERT INTO `view2` VALUES ('3', '叮咛');
INSERT INTO `view2` VALUES ('4', '青衣');
INSERT INTO `view2` VALUES ('5', '伶仃');
INSERT INTO `view2` VALUES ('6', '葫芦');
INSERT INTO `view2` VALUES ('7', '感怀');

两表关系为表view1中的out_id 是表view2的id

2.创建视图文件

MODEL文件夹下创建文件View_testViewModel.class.php

内容是:

<?
class View_testViewModel extends ViewModel
{
  public $viewFields = array(
   'View1'=>array('id','name'),
   'View2'=>array('name'=>'name2','_on'=>'View1.out_id=View2.id')
  );
}
?>

3.调用

Action下建个文件,命名,如:View_testAction.class.php

<?php
// 分类模块
class View_testAction extends CommonAction {
 public function index(){    
  $map = $this->_search (); 
  if (method_exists ( $this, '_filter' )) {
   $this->_filter ( $map );
  }
  $name = "View_testView";
  $model = D("View_testView");
  if (! empty ( $model )) {
   $this->_list ( $model, $map );
  } 
  $this->display ();
  return;
 }

?>

4.到了这步,问题出来了

这里的_list函数与原CommonAction.class.php中的类似,但是需要自己做小修改;

附上源码:

 protected function _list($model, $map, $sortBy = '', $asc = false) {
  //排序字段 默认为主键名
  if (!empty ( $_REQUEST ['_order'] )) {
   $order = $_REQUEST ['_order'];
  } else {
   $order = ! empty ( $sortBy ) ? $sortBy : $model->getPk ();
  }
  //排序方式默认按照倒序排列
  //接受 sost参数 0 表示倒序 非0都 表示正序
  if (isset ( $_REQUEST ['_sort'] )) {
   $sort = $_REQUEST ['_sort'] == 'asc' ? 'asc' : 'desc'; //zhanghuihua@msn.com
  } else {
   $sort = $asc ? 'asc' : 'desc';
  }
  //取得满足条件的记录数
  $count = $model->where ( $map )->count ();
  if ($count > 0) {
   import ( "@.ORG.Page" );
   //创建分页对象
   if (! empty ( $_REQUEST ['listRows'] )) {
    $listRows = $_REQUEST ['listRows'];
   } else {
    $listRows = '';
   }
   $p = new Page ( $count, $listRows );
   //分页查询数据

   $voList = $model->where($map)->order( "`" . $order . "` " . $sort)->limit($p->firstRow . ',' . $p->listRows)->select();

   /*就是这句,原句是$voList = $model->where($map)->order( "`" . $order . "` " . $sort)->limit($p->firstRow . ',' . $p->listRows)->findAll ( );*/
   //分页跳转的时候保证查询条件
   foreach ( $map as $key => $val ) {
    if (! is_array ( $val )) {
     $p->parameter .= "$key=" . urlencode ( $val ) . "&";
    }
   }
   //分页显示
   $page = $p->show ();
   //列表排序显示
   $sortImg = $sort; //排序图标
   $sortAlt = $sort == 'desc' ? '升序排列' : '倒序排列'; //排序提示
   $sort = $sort == 'desc' ? 1 : 0; //排序方式
   //模板赋值显示
   $this->assign ( 'list', $voList );
   $this->assign ( 'sort', $sort );
   $this->assign ( 'order', $order );
   $this->assign ( 'sortImg', $sortImg );
   $this->assign ( 'sortType', $sortAlt );
   $this->assign ( "page", $page );
  }
  
  //zhanghuihua@msn.com
  $this->assign ( 'totalCount', $count );
  $this->assign ( 'numPerPage', C('PAGE_LISTROWS') );
  $this->assign ( 'currentPage', !empty($_REQUEST[C('VAR_PAGE')])?$_REQUEST[C('VAR_PAGE')]:1);
   
  Cookie::set ( '_currentUrl_', __SELF__ );
  return;
 }

 

加在View_testAction.class.php里即可;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值