evshop_controller.md 2.88 KB

EVShop编程规则之Controller篇

1. Controller中成功和错误的处理

不涉及对话框处理,只在Controller页面跳转的情况下,针对错误处理和成功处理规则如下:

  1. 错误和异常情况下,使用 $this->error(message);
  2. 成功的情况下,使用 $this->success(message);

而具体error,success函数调用后所显示的画面的样式,可以在conf/config.php中进行定义

//默认错误跳转对应的模板文件(View/Public/error.html)
'TMPL_ACTION_ERROR' => 'Public:error',
//默认成功跳转对应的模板文件' (View/Public/success.html)
'TMPL_ACTION_SUCCESS' => 'Public:success',

2. Controller中成功或者失败返回JSON数据格式

Controller返回JSON数据,一般用于前端JS异步调用Controller方法的场合。 返回JSON,为了后期扩展,统一使用以下函数生成json返回

  1. 成功的场合:

    json_return_success('successMessage');
    // will return { 'errCode':0, 'info':'successMessage'}
    
  2. 失败的场合:

    json_return_error('errorMessage');
    // will return {'errCode':1, 'info':'errorMessage'}
    
  3. 需要自定义errorCode的场合:

    json_return_err_code(4001,'errorMessage');
    // will return {'errCode':4001, 'info':'errorMessage'}
    
  4. 需要自定义多个数据字段的场合:

    json_return_customer([
        'errCode'=>4002,
        'Message'=>'Customer Message',
        'OtherInfo'=>'Other Infomation'
    ]);
    
  5. 对于微页面(weipage),有其自定义的JSON定义,在微页面编辑中,涉及到的JSON返回一般使用:

    json_return_for_weipage($err_code,$err_msg='',$err_dom='');
    

3. 页面中分页显示的设置

设置数据的分页需要以下步骤:

  • 在Controller中导入以下命名空间 use Library\MyPage;
  • 在对应的Controller方法中,调用MyPage类 php public function album_pic_list() { $where_condition = Array('aclass_id'=>$_GET['id'],'app_id'=>$this->app_id); // 查询条件 $pic_count = M('album_pic')->where($where_condition)->count(); // 获得显示的总数目 $pic_page = new MyPage($pic_count,6); // 创建MyPage类,参数1表示显示的总数,参数2表示一页中显示的数目 $pic_list = M('album_pic')->where($where_condition) ->order('create_timedesc') ->limit($pic_page->firstRow.','.$pic_page->listRows) ->select(); // 查询时注意加入limit进行限定 $this->assign('pic_list',$pic_list);// 向页面赋值列表 $pagebar = $pic_page->show(); $this->assign('show_page',$pagebar); // 向页面赋值pagebar元素 $this->display('gp02_goods_album_pic_list'); // 视图显示 }
  • 在视图中,通过以下代码显示Pager导航 <div class="pagination"><?php echo $show_page; ?></div>