目录

一、 前言... 1

二、为什么要使用YII+ace. 1

三、新建YII模块... 1

四、如何修改模板... 3

五、注意的地方... 4

六、整合的不足之处... 4

一、 前言

yii-bootstrap扩展是已经将YII+Bootstrap完美结合,但今天我们讨论的不是它,面是基于bootstrap风格的ace admin(具体介绍,大家上网搜索);

先来张效果图:

图1 整体效果图

二、为什么要使用YII+ace

ace是前端模板,所以后台用什么语言或框架并不重要。但打开ace源码,您会发现很混乱,不知从哪里下手。本文将使用YII作为后台,结合Ace,为大家展示以搭积木的方式来构建自己的超酷后台。

三、新建YII模块

a、 放置好ace的js、css文件,生成yii模块;

图2 模块文件

b、 新建布局文件main.php,在此文件里引入UI的框架和固定的部分;main.php里固定上面的导航条和左边的菜单;

c、 在controller里引用此布局

图3 引用ace布局文件

d、 根据需要,在action里渲染具体的页面部分

图4 渲染视图

上图中,视图registerd里就只写表单部分,框架的其它部分已经在main.php里加载了;

图4中三个属性的说明见下图:menuID指示了当前点击的菜单

图5 菜单配置与页面上的有关系

四、如何修改模板

由于YII的布局文件存在的,所以开发者只需要写需要的部分。比如要开发图6这个页面,步骤如下:

图6 开发示例页面

a、 写action,并render到register页面

b、 Register中的控件从ace模板文件中copy而来,复杂的控制和布局通过组合实现,这一点跟搭积木很像;具体copy方式如下:用chrome打开模板页面,选择所需的控件。如图7所示:先copy父元素,再嵌套子元素;

图7 chrom中copy代码

提示:如果不采用此种方式,而是直接复制模板上的代码,您会发现ace模板的代码很混乱,不太容易组装成自己的页面。

五、注意的地方

a、 要理解bootstrap中,<div class=’row’></div>是新的一行。

b、 要理解栅格化,这在自己页面控件的重新布局是需要的。比如:

<div class="col-sm-6"></div>表示占父元素水平空间的一半。

C、除了基本的控件使用外,还有图标,提示等效果。

<i class="green icon-edit bigger-110"></i>:绿色的笔图,bigger-110表示大小

<span class="badge badge-danger">4</span>:红色(danger)圆圈中数字4

<div class="hr hr8 hr-double"></div>双分割线

…………

六、整合的不足之处

a、 菜单传递的方式 menu_parent,menu_child,不方便。

b、 当第一次整体UI加载完后,后续的菜单点获取的页面应该使用ajax传递,应该在main的body里留好div,存放controller->render的页面。

YII与Ace Admin 的集成的更多相关文章

  1. Ace Admin 使用教程

    (原) 公司项目要换框架,然后丢了一套国外的给我,ace admin,本想着拿来改改,翻翻百度就能用的,可它是国外的啊,国内普及率又不高,没办法,硬着头皮一点点啃英文文档吧. File(文件) 简介: ...

  2. 改造 Ace Admin 模板的 ace_tree 组件的 folderSelect 样式

    *注:我用的Ace Admin版本为1.3.4 Ace Admin 是一个轻量,功能丰富,HTML5.响应式.支持手机及平板电脑上浏览的优秀管理后台模板. 关于tree的使用,html文件夹下tree ...

  3. Ace admin 如何实现类似于freamset加载页面

    如上标题所述,ace admin做后台页面的时候,可以实现类似于用freamset的功能,但是ace admin做的比freamset更好,他可以用异步加载的形式展示,而加载的页面的内容可以尽可能的少 ...

  4. 并发编程概述 委托(delegate) 事件(event) .net core 2.0 event bus 一个简单的基于内存事件总线实现 .net core 基于NPOI 的excel导出类,支持自定义导出哪些字段 基于Ace Admin 的菜单栏实现 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)

    并发编程概述   前言 说实话,在我软件开发的头两年几乎不考虑并发编程,请求与响应把业务逻辑尽快完成一个星期的任务能两天完成绝不拖三天(剩下时间各种浪),根本不会考虑性能问题(能接受范围内).但随着工 ...

  5. ace admin 左侧菜单定位

    后台模版来自:Ace Admin http://ace.jeka.by/form-elements.html 左侧菜单,通过js根据url来判断显示哪块 window.location.pathnam ...

  6. ace admin后台模板

    http://ace.jeka.by/index.html 下载: http://www.daimajiayuan.com/plus/download.php?open=0&aid=18152 ...

  7. 基于Ace Admin 的菜单栏实现

    1.首先是数据库表必然包含以下几个字段Id ,ParnetId,Url,Name等 create table dbo.Module ( Id uniqueidentifier not null con ...

  8. ACE admin 后台管理框架

    一.样式 1.常见按钮 .btn-app .btn-group .btn-corner .btn-xs .btn-sm .btn-mini  .btn-minier .btn-defalut .btn ...

  9. ace admin

    .svg             image/svg+xml.woff            application/x-font-woff.woff2          application/x- ...

随机推荐

  1. windows 环境怎样恢复 (oracle 11g grid) ocr voting 损坏的集群

     windows 环境怎样恢复 (oracle 11g grid) ocr voting 损坏的集群 oracle 11g 以后 ocr 能够放到 asm 磁盘上,而ASM的启动依赖于ocr和vo ...

  2. 第三章SignalR在线聊天例子

    第三章SignalR在线聊天例子 本教程展示了如何使用SignalR2.0构建一个基于浏览器的聊天室程序.你将把SignalR库添加到一个空的Asp.Net Web应用程序中,创建用于发送消息到客户端 ...

  3. .net通用权限框架B/S (三)--MODEL层(2)

    接上篇 实体数据模型保存后生成上下文和实体 上下文和实体实际是由根据.tt模版生成的 当实体数据模型.edmx更新保存后,上下文和实体就会根据.tt模版自动更新 生成的上下文继承 DbContext ...

  4. Android入门——UI(9)

    SwipRefreshLayout下拉刷新控件 <?xml version="1.0" encoding="utf-8"?> <android ...

  5. shared_ptr智能指针源码剖析

    (shared_ptr)的引用计数本身是安全且无锁的,但对象的读写则不是,因为 shared_ptr 有两个数据成员,读写操作不能原子化.根据文档 (http://www.boost.org/doc/ ...

  6. libwebsocket manual

    Name: libwebsocket_cancel_service - Cancel servicing of pending websocket activity Synopsis: void li ...

  7. MVC自学第二课

    鉴赏一个软件开发框架最好的办法是投入其中并使用它.本课将使用ASP.NET MVC框架创建一个简单的数据录入应用程序.为简化起见,本课涉及到的一些技术细节在这里可能会跳过,会在以后的课程中再详细说明. ...

  8. ETL中的数据增量抽取机制

    ETL中的数据增量抽取机制 (     增量抽取是数据仓库ETL(extraction,transformation,loading,数据的抽取.转换和装载)实施过程中需要重点考虑的问 题.在ETL过 ...

  9. DLR、ASTER GDEM、SRTM3、GMTED2010等5种全球高程数据对比

      目前网上有多种全球高程数据,国内在这方面也进步喜人,资源三号目前已放出来的卫片给了不少惊喜,其高程数值得期待.但资源三号的高程数据放出来还需等待,过去两三年全球高程数据发展相当迅猛,DLR放出了相 ...

  10. js类方法,对象方法,原型的理解(转)

    function People(name) { this.name=name; //对象方法 this.Introduce=function(){ alert("My name is &qu ...