一、后台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_passwordform_input等,还有几个特殊的控件uploadifyueditormy97DatePicker

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_actionsform_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.五个模版配置函数,publicTemplatemainTemplatemainListTemplatemainFormTemplatelayerTemplate

6.ajax请求返回参数设置,ajaxSuccessOutputajaxFailureOutput

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('模块移除失败');
}

 

 

 

 

 

 

 posted on 2015-10-09 14:00  咖啡机(K.F.J)  阅读(294)  评论(0编辑  收藏  举报