一、后台view代码添加
1)列表页面
列表将会分成三块,链接按钮、过滤条件和列表展示,列表展示那块还会包括分页
1.链接按钮
//超链接按钮 $buttons = array( matrix_a_btn(array('href'=>base_url('user/add'), 'text'=>'添加用户')) );
2.过滤条件:按钮选择过滤和普通按钮过滤组合而成,代码我也分开了一下
$group1 = matrix_a_btn(array('href'=>'#', 'text'=>'未完成(100)'), 'info', ''); $group2 = matrix_a_btn(array('href'=>'#', 'text'=>'已完成(2)'), 'info', ''); $group3 = matrix_a_btn(array('href'=>'#', 'text'=>'已退货(21)'), 'info', 'active'); $btn_groups = array( array($group1, $group2, $group3) );
$options = array(0=>'包含', 1=>'等于', 2=>'开头', 3=>'完与'); $select = form_dropdown('filter', $options, $filter);//单选下拉框 $select = matrix_select($select, true); $email_attr = quick_input_attr('email', 'span3', '请输入邮箱'); $email = form_input($email_attr, $email_value); $begin_attr = quick_input_attr('begin', 'span2', '开始注册时间'); $begin = my97DatePicker($begin_attr, $begin_value); $inputs = array( array($select, $email), array($begin) );
3.列表展示:就是在拼接table了,这里将会用到专门为table封装的表单代码,有时候一个页面可以有多个table。
1.设置表头th,使用函数table_th。
2.表格中的超链接用函数table_a,删除审核链接等用table_a_btn。
2.拼接tr中的内容。先使用函数table_format_td,再使用函数table_format_tr。
3.将分页,table额外属性,th表头,tr内容拼接,注意下分页是从controller层传递过来的。使用函数table_format。
$ths = array( table_th(form_checkbox(), '5%'), table_th(table_a('#', '<i class="icon-sort"></i>邮箱'), '35%'), table_th(table_a('#', '<i class="icon-caret-down"></i>角色'), '20%'), table_th('上次登录时间', '20%'), table_th('操作', '20%') ); $trs = array(); foreach ($rows as $key=>$row) { $a1 = table_a(base_url('user/add', array('id'=>$row['id'])), '查看'); $attrs = array( 'data-id'=>$row['id'], 'data-name'=>"xx", 'class' => 'warning', 'data-href'=>base_url('user/add'), 'data-prompt'=>'您确定这个订单吗?' ); $a2 = table_a_btn($attrs, '删除'); $tds = array( table_format_td(form_checkbox()), table_format_td($row['email']), table_format_td(matrix_badge(array('text'=>$row['role']))), table_format_td($row['time']), table_format_td($a1.$a2), ); $trs[] = table_format_tr($tds, array('data-sort'=>$key, 'data-id'=>$row['id'])); } $table_attrs = array('data-type'=>'dragsort', 'data-ajax'=>'ajax/sort.php', 'data-td'=>$row['id']); $table = table_format($ths, $trs, $page_html, $table_attrs);
4.将三个内容块拼接
return query_form($inputs, $buttons, $btn_groups).$table;
2)表单页面
表单可以分为3块,表单内容集合、表单控件和表单按钮
表单内容集合可以是多个的,下面的主要内容和编辑器集合
表单中也会包括控件,例如输入框、编辑框、日期按钮、图片上传、单选多选等
最后的按钮就简单点了,当点击返回的时候,如果页面有改动,例如改动输入框中的内容,是会有提示的!
1.控件编辑
1.先是编辑控件,赋值,属性设置,使用函数form_password、form_input等,还有几个特殊的控件uploadify、ueditor、my97DatePicker
2.格式化提示语、标签名等,目前有三类
3.form_format_widget用于普通控件、form_format_field_widget用于内容展示和form_format_input_widget用于单选多选控件,
$name_value = form_set_defaultvalue($user, 'name'); $name_attr = array( 'class'=>'span4', 'name'=>'name' ); $name = form_input($name_attr); $name = form_format_widget('用户', $name, true); $field_china = form_format_field_widget('国家', '中国'); $checkboxs[] = matrix_checkbox_inline(array('name'=>'join[]'), 1, '软妹子'); $checkboxs[] = matrix_checkbox_inline(array('name'=>'join[]'), 2, '红宝石', true); $checkboxs = form_implode($checkboxs); $checkboxs = form_format_input_widget('搭配', $checkboxs);
2.表单内容集合
1.将需要组合在一起的控件放到一个数组中
2.用函数form_detail_container,将内容拼接起来
$widget1 = array($pwd, $repwd, $custom_btn, $field_china, $checkboxs, $cover, $category);//控件数组 $forms[] = form_detail_container($widget1, '主要内容'); $widget2 = array($ueditor); $forms[] = form_detail_container($widget2, '编辑器');
3.提交按钮
1.有一个快捷方式form_detail_actions,包括一个提交和一个返回按钮。返回按钮会做简单的操作判断,给出提示。
2.或者通过form_actions和form_success_button等,单独配置
$forms[] = form_detail_actions(); $btn = form_success_button(); $forms[] = form_actions($btn);
4.forms数组拼接
return form_implode($forms);
二、controller通用编辑
1)adminController
每个controller文件都会继承这个文件,在这个文件中会有一些通用的配置
1.各种验证
2.提取当前登录用户对象信息,user
3.获取当前页码,pageNo
4.获取post或get的参数,p
5.五个模版配置函数,publicTemplate、mainTemplate、mainListTemplate、mainFormTemplate和layerTemplate
6.ajax请求返回参数设置,ajaxSuccessOutput和ajaxFailureOutput
7.通用错误页面,comError
8.分页设置,alternate
9.还有一些函数会在其他地方调用的时候解说
2)列表页面
1.使用代码编写
1.设置面包导航,接收传递参数【与下面的一致】
2.初始化相关dao层文件,并做查询等操作【与下面的一致】
3.引用helper/view中的视图编辑文件
4.引用视图函数,并设置视图参数form
5.如果需要自定义调用其他CSS或JS的话,调用函数formatMetaLink,格式化一下
6.调用列表模版设置函数mainListTemplate
$breadcrumbs = array( array(base_url('system/adminuser'), '用户列表') ); $userModel = InitPHP::getMysqlDao('user', 'mysql/sys'); $users = $userModel->getListByStatus(); InitPHP::getHelper('view/system'); $page_html = $this->alternate(100, 10); $form = adminuser_view($users, $page_html); $this->view->assign('form', $form); $other_link = $this->formatMetaLink(array(form_my97_script())); $this->mainListTemplate('用户列表', $breadcrumbs, $other_link);
2.使用自定义视图编写
1.设置面包导航,接收传递参数
2.初始化相关dao层文件,并做查询等操作
3.调用mainTemplate函数
4.配置视图层的变量
5.display视图
$breadcrumbs = array( array(base_url('system/module'), '模块列表') ); $moduleModel = InitPHP::getMysqlDao('module', 'mysql/sys'); $modules = $moduleModel->getListByStatus();//获取未删除列表 $this->mainTemplate(true, '模块列表', $breadcrumbs, 'menu'); $this->view->assign('modules', $modules); $this->view->display('system/module');
3)表单页面
1.使用代码编写
1.接收参数、设置标题、判断当前操作(修改或添加),设置列表地址
2.初始化相关dao层文件
3.判断是否是post提交操作,并在里面做更新或添加操作
4.设置面包屑导航参数
5.引用helper/view中的视图编辑文件
6.引用视图函数,并设置视图参数form,设置跳转地址
7.设置token参数,用于CSRF防护
8.调用表单模版配置函数mainFormTemplate
$id = (int)$this->p('id');//修改将会传ID $operate = $this->operateTitle($id); $title = $operate.'用户'; $userModel = InitPHP::getMysqlDao('user', 'mysql/sys'); $url = base_url('system/adminuser'); if($this->controller->is_post()) { $row = array( 'pwd' => md5($this->p('pwd')) ); if($id > 0) { //更新 $affected = $userModel->updateById($row, $id); }else { $affected = $userModel->insert($row); } if($affected > 0) { $msg = '用户' .$operate. '成功'; $this->ajaxSuccessOutput($msg); }else { $msg = '用户' .$operate. '失败'; $this->ajaxFailureOutput($msg); } } $breadcrumbs = array( array($url, '用户列表'), array(base_url('system/adminuseradd'), $title) ); InitPHP::getHelper('view/system'); $form = adminuseradd_view($user); $form_attrs = array( 'data-href' => $url ); $form = $this->form_token_view($form, $form_attrs);//包裹form $this->view->assign('form', $form); $this->mainFormTemplate($title, $breadcrumbs);
4)弹出层
1.判断是否是post操作,并做相应逻辑
2.引用弹出层模版设置函数layerTemplate
3.display自定义视图
if($this->controller->is_post()) { $tree = $this->p('tree_hidden'); $data = array('ids'=>$tree, 'names'=>array('随机3', '随机二')); $this->ajaxSuccessOutput('获取成功!', $data); } $css_tree = form_css(script_url('libs/ztree/zTreeStyle/zTreeStyle.css')); $other_link = $this->formatMetaLink(array(), array($css_tree)); $this->layerTemplate('树形结构', $other_link); $this->view->display('user/layer');
5)删除操作
1.获取参数
2.初始化相关dao层文件
3.做删除操作
4.返回json参数
$id = $this->p('id'); $moduleModel = InitPHP::getMysqlDao('module', 'mysql/sys'); $affected = $moduleModel->updateStatusById($id, constHelper::STATUS_DEL); if($affected > 0) { $this->ajaxSuccessOutput('模块移除成功'); }else { $this->ajaxFailureOutput('模块移除失败'); }