哪个大神p图已笑疯能帮我p个图?

12272人阅读
linux应用程序之--web后端(php等)(45)
在撰写此文前首先必须申明的是本人不鄙视任何一种框架,也无意于挑起PHP框架间的战争,更没有贬低某个框架使用者的用意,本文纯粹个人的看法。你可以认为我无知也好,或者装逼也好,请不要试着在任何情况下,随便发起言语的攻击,这只是我个人的一些经验而已,你可以选择赞成或不赞成,也可以选择看与不看。
还有本人基本对这些框架中的大部分都用的时间比较长,绝对不是随便出个Hello World!就在这里评论,曾任某某底层本土公司的技术总监,某某所谓巨头公司的IOS架构师和PHP高级程序员,XX外资创业企业的项目经理,基本上在这些职位工作期间基本上对大部分这里提到的PHP框架使用的都比较深入,也曾参与或主办过这些公司的招聘,现在虽然在创业,但是人才需求也是按照本文来的。写这篇文章的目的不在于跟阅读者挑起任何语言战争,只是希望给正在路上的PHPER提供一条适合自己的道路,如果你要骂SB,请到其他处,OK?对你没帮助你可以不看的。
好了开始我的分析吧。。。
第一种境界:学院主义—无框架型
这是一个PHP语言的入门时期,也许也是你编程生涯的开始,可能你在读大学或者在培训部培训的初期,这个时候你正在吭HTML5,CSS3,JS,Jquery还有对于你现在来说最重要的,应该学的东西PHP+Mysql。这个是你建立好的雏形的良好时机,也是最容易放弃的最难时期,并且决定你后面所有的编程职业生涯,前提是你真的想从事编程职业。
常说的语言及做的事情:这个好难,太难搞了;我要考这个认证,对将来工作有帮助;找个单位实习下;接个项目练练手
对各种付费虚拟产品的态度(如付费课程,付费服务器等):买不起啊。。。学费都花了这么多,我还是找免费的吧或者能不能便宜点啊
薪资水平:1.5k左右公司职位:实习生基本技能:html5,css3,js,jquery操作系统:windows xp,windows 7,windows 8编程工具:dreamweaver,eclipse,netbeans,editplusPHP框架:无框架概念占据人数:20%
第二种境界:屌丝主义—快速原型框架
这个时候你已经从学校或培训部毕业随之而来的劣性发展成就了这个境界,这个境界的程序员占据了PHPER人数 40%以上。为什么说是屌丝主义?经过前期的培训部速成培训(这个境界大部分是XXX100,XXX兄弟连等出来的),你基本掌握了一些国内的CMS的使用与二次开发,以及一些类似Thinkphp,Codeigniter,Brophp等低层次框架的开发,并且去一些不怎么样的所谓创业公司或者大部分去了一些企业网站制作公司做一些企业网站,小模块,小系统的开发,然后你会说我好强大,认为PHP也就全会了,做了井底之蛙。。。崇尚quick
and dirty。也就是这部分在国外不存在的人导致了PHP在国内长期被Rails,Nodejs等使用者鄙视。
语言行为及特征状态:
看不懂任何英语技术,英语文档,凡事没有培训部在搞的,只有英文文档的东西国内一律没大公司在用,都非主流,排斥英文文档和新技术,以及各种超出他学习能力范围的技术。
不知道的技术一律会说,这些技术没有公司或者很少公司在用,谁要学。。。,大公司都是自己开发框架的。。。。
比如 Angularjs,Emberjs,Hadoop,Mongodb,Nodejs,Rails,Requirejs等有点极客的都没听说过,然后会认为Java,.NET这种是企业级,C语言算法才是王道,用的公司多,真正的高手用C扩展PHP的,我想说别他妈这么屌丝好吗,你个XXX,我想说请你睁眼看看世界,好吗?别动不动别人说些你不懂的就说JAVA,C算法,数据结构这些,你懂吗,你个屌丝一枚的。。。你的垃圾公司没在用,不证明其它好的公司没在用,不是大家都用TP和CI的,OK?就知道php+mysql了?
对真懂PHP的人的态度
TP很给力啊,能开发的话什么框架都无所谓,技术高你就自己开发一个啊你自己什么都不懂还来装逼TP够用了,CI够用了你有本事用C扩展个框架啊,SB
对各种付费虚拟产品的态度(如付费课程,付费服务器等)
广告,X你ma收费的视频课程谁要,SB免费空间,免费主机找找看用开源的东西收费,无耻喜欢用虚拟主机,只选择PHP5.2的空间上架或者用windows服务器喜欢windows,认为用mac的都是装逼认为只有兼容所有浏览器,至少也要支持IE8的才是正常的网站让他付钱,他宁愿死
操作系统:windows xp,windows 7,windows 8
使用的技能:Discuz,DEDECMS,Thinkphp,Yii Framework1,Codeigniter,Jquery…PHP框架:Thinkphp,Codeigniter所在公司:做企业站,做地方门户,做行业门户,做管理系统等经常去的网站:CI中国,PHP100,Thinkphp官网,phpchina,discuz官方论坛,dedecms论坛等编程工具:dreamweaver,eclipse,notpad++,editplus,EclipsePHP Studio(就xxx100那个垃圾出的工具)薪资待遇:2.5k-5k占据人数:40%
第三种境界:崇拜主义—全栈型框架
这部分人一般都是大学本科以上毕业,非培训部速成。但是由于前期也是很薄弱,学校里老师教的可能还不如速成培训部的,所以除了观念的不同,大部分实用技术不如速成培训部出来的。但是观念基本决定了后面走的路不一样。这部分人当中大部分转了IOS,Rails等技术甚至一大半都转行了,甚于一小部分进入了PHPER行列。因为在学校英文都是过了一定等级的,看基本的英文文档还是比较可以,再加上可能由于学历限制去了一些比较还可以的公司,从基础程序员甚至实习生做起,还可以的公司一般都会使用大量只有英文文档的技术,比如我以前一个同事刚毕业的时候去应聘一个新美合资PHP工程师的职位,要求就是懂Agavi框架,还要懂前端的restful框架-backbone,其实那时候backbone刚出来还不错的。然后就在试用期死啃这两个框架,因为有大量比较散的中文文档,所以终于吭懂了,以后看其它部分中英文都有点的文档等基本也可以尝试看看了,但是毕竟也能通过半英语学习了,然后进步都是很快。但是一个悲催的转折点又来了,这时候就看你的选择了。
是什么转折点呢?就是对某一个框架(这里框架只是某种技术的狭义说法)出现了比较大的喜欢程度,而且这个框架也基本中文文档不全,但是用的中小型有新意的创业型公司,外资企业,合资企业都蛮多的,薪资待遇也还不错,尤其那些不能看英文文档的人让他获得了优越感,再加上这些框架本身都是基于composer包,php-fig最新标准等发布的,并且学习使用也不是很复杂,深深的让他喜欢上了此款框架,在这个时候基本上出于已经产生的西方主义的好奇心,他已经掌握了一些类似bootstrap,backbone等简单的前端UI技术以及轻量MV*框架,这个时候也许真的是做什么项目,只要是web,他都可以做了,并且出于中小型高端企业的要求,他需要会的还有Linux服务器的各种架设比如web服务器,邮件服务器等,这个时候基本上他如果有客户资源自己都可以做产品创业了。所以转则点就是他这个时候选择不思进取(当然创业不算,因为创业者是最牛逼的),一直用他掌握的框架迅速的开发各种东西,还是学新的框架?如果是前者,将导致他永久的崇拜一个比较简单的全栈框架,然后永久的等待这个框架的新版本发布,而不会转移视线,更别说学新的东西了,这样基本上升就很困难了,比如说用larvel框架,那么别人跟你说zf2,sf2,你会说太复杂的东西不好,太复杂的东西不适合我。。。请改进一步吧,会有更尖端的东西等着你
对各种付费虚拟产品的态度(如付费课程,付费服务器等)
不需要课程了,谢谢,我用xxx就够了,那个太复杂不适合我嗯,我正在找这个视频,买的,自己看这么复杂的文档太累阿里云还是不错的代码放Ucloud,静态资源放七牛吧
感觉BAE不错
使用的技能:bootstrap,jquery-mobile,zurb foundation,backbone,laravel4/zf1/cakephp/fuelphp/Yii2,Linux服务器等
PHP框架:laravel4,zend framework1,cakephp,fuelphp,Yii Framework2操作系统:windows 7,windows 8,mac osx,linux所在公司:电子商务,门户媒体,社交网络,各类创新型网站等编程工具:sublime Text,PHPstorm,vim经常去的网站:segmentfault,德问,v2ex,ruby-china,github,cnode等薪资待遇:6k-10k占据人数:25%
第四种境界:完美主义—组件型框架
一般这个境界的PHP程序员基本处于一种完美状态了,基本上一个人能完成一个项目所有的东西,包括前端(前端可以设计的非常潮或者说fashion),后端,已经服务器的架设优化,包括云计算底层的开发,各种虚拟化的东西,比如KVM等,基本已经掌握各种开发,但是开发经验不一定就多,年龄不会超过30,基本会各种技术,移动,底层,前端,后端,mac,linux什么的都可以拿起就玩,会用最屌的开发工具—emacs进行自己的编码,崇尚完美主义,喜欢把用户体验和架构都做的一点瑕疵都没有,比如一个颜色的调度课程都要花去他一整天的功夫,但是在团队开发面前,更能发挥出这个境界的威力,因为还没达到第五种神的境界,所以过于最求强大,不仅会带来项目时间上的硬伤,也会给项目带来超级大的成本花费,包括学员的学习成本,强大的框架需要的维护成本等等。适合在一些比较大的巨头企业或者大公司或者外资创业企业做项目领导或者首席架构等职位,单论技术,已经在PHP方面可以算是很强大了。你需要会的是学习期至少一年多到两年的symfony2框架,而不是几天就会的laravel,所以花费的学习成本是极其大的,承担的风险也大,一般在这个境界的PHP程序员,国内并不多,但是也不是很少,这个阶段的程序员一般都是从其它编程语言转过来的,比如rails或者nodejs或者Python等,但是java和.net由于本身就不符合极客的历史潮流,转换到PHP已经无法到这里了,一般直接转屌丝码农境界去了。rails或node等转过来的程序员一般都理解依赖注入,监听器,过滤器等等技术面,并且node里的npm和rails里的gem与php的composer是一样的,sf2和zf2的bundle机制也是与rails相同的,所以导致了rails程序员一转3,4个月就会sf2的情况,再加上zf2和sf2本身没中文文档,所以必须是英文比较好的才能学会,尤其sf2,有book,cookbook,refenrencebook,componentbook,bundlesbook等等,而且必须用几十个第三方bundle才能完成一个真正意义上的应用,复杂度是难以想象的,但是复杂的东西有其强大之处,比如
hwioauthbundle,fosuserbundle,fosrestbundle等,都是非常不错的,fosrestbundle中根据group加载关联推到rest,而不必全部加载关联数据就是个很不错的例子,而asseticbundle直接可以合并压缩js和css,并且基于node的组件,更是把sf2的强大发挥的淋漓尽致,但是每个bundle的学习成本基本比学整个laravel4框架难度还大,而且全是github的wiki没有任何中文,这就不但加大了技术学习成本也加大了语言学习成本,所以到达这个境界需要无比的毅力和探索的好奇心,两者缺一不可。
对各种付费虚拟产品的态度(如付费课程,付费服务器等)
嗯,有需要,课程买好了,有空看看哦udemy上的课程做的很不错,一般$99的课程都不错的,我买了Rails我觉得paas比较好,国内paas都不给力啊感觉qingcloud很不错,一直在用
使用的技能:
前端:Anauglar/ember/backbone,jquery,bootstrap/foundation,Sass,Scss,Less…各种restful技术后端:Symfony2/Zend Framework2,Rails,Nodejs运维:Linux玩的超级熟练,Mongodb,Mysql已经Redis,Nginx等不管web还是其它服务器都能架设,优化并维护,还有各种虚拟化KVM等底层:还不给力移动:一般以IOS开发的居多,可能会有安卓的开发HTML5:Sencha Touch等这些框架随便玩玩PHP框架:symfony2,zend framework2所在公司:各类创新型网站,移动开发,云计算web层开发(可能兼顾底层)等经常去的网站:stackoverflow,google,github等编程工具:sublime text , emacs,text mate薪资待遇:11k-15k占据人数:10%
第五种境界:极客主义—微型框架
请注意:这种境界必须经过前面的第四种境界才能到达
这个境界不必多说,相信仁者见仁,智者见智了。第二种境界的码农会说这个连他们都不如,但是第四种境界的高手会对他们膜拜,只就是极客的魅力,只让高手膜拜。微型框架之所以有这个效应是因为你学框架本身,一晚上就会,你要用的像个极客,也许难度早已超出你的想象,是第四种境界的好几倍,比如你要restful,随随便便调用一下,symfony2的组件再通过组件调用fosrestbundle,直接就可以写rest服务器了,如果你是菜鸟,就会直接返回json,这就是微型框架高明之处,神与菜鸟就一念之隔。不多说自己体会。只有一个比喻,还记得神雕侠侣吗?第三种境界就是独孤求败30岁前用的锋利无比的剑,第四种境界就是他中年用的也是杨过后来用的重80斤却不开锋的剑,第五种境界就是他晚年用的木剑,其实是回归原始无剑胜有剑了,此时不需要什么强大的了,微型框架各种引入(别跟我最后来一句牛人自己开发框架,OK?那是傻逼产生垃圾做的东西),都是神的。。。。。。。
只能说你的薪资不低于20k了,如果是这个境界,也可以自己选择创业哦。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1174255次
积分:12543
积分:12543
排名:第1036名
原创:24篇
转载:671篇
评论:127条
(1)(11)(4)(29)(15)(12)(1)(1)(3)(8)(17)(18)(37)(11)(8)(6)(14)(5)(7)(9)(15)(4)(5)(15)(8)(9)(16)(12)(2)(15)(4)(1)(14)(7)(9)(10)(6)(12)(6)(29)(11)(5)(8)(12)(11)(13)(18)(44)(59)(14)(45)(43)(2)(2)问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
php开发的时候你们都用什么前端框架?
来源: 101 新手上路
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
php是后端语言 前端框架反倒跟php没关
既然是php开发 那应该偏互联网了
首先 你要学习 html/css/js这些基础知识 看你问的问题我特意强调这一点 前端的基础这三大块什么框架都不能扔 当然不深入的话js可以先扫过 闭包这些东西可以先不看后面补也来得及
jQuery应该是基础 UI可以考虑下bootstrap或者jQuery UI 学习的话不用太新潮 资料多才对
PS bootstrap的底包是在东西太少了 连日期选择器这些都要自己找第三方的
MVC可以用angular.js 或者backbone这些
如果这些你都学会 估计也问不出这么没水准的问题了
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
根据项目的需求,采用相应的解决方案。前端是用什么开发,跟后端php有什么关系呢?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
php不应该说是前端语言。狭隘的讲所谓的前端是指和html,js,css这些,至于前端框架,我觉得有一个必须推荐一下,bootstrap,它是Twitter推出的一个用于前端开发的开源工具包。
php有没有框架?也有,作为新手,可以使用CI框架,非常易于上手。的帮助文档也比较齐全。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
前端用什么无所谓啊
bootstrap或者自己造轮子
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
问题可以改成phper都喜欢用什么样的前端框架
该答案已被忽略,原因:宜作评论而非答案
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
注意是国内趋势,不是国外,php的框架太多了,学不过来,只能针对一个框架深入学习。只所以根据趋势来分析的话,一方面代表该框架的普及程度,另一方面,找工作也比较好找。特别是BAT哪些公司的技术选择。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
其他的不是很清楚,听内部朋友说,处理内部自己的外,用的最多的是Yii1。
我们公司主框架用的是Zend Framework1,有几个项目用的是Zend Framework2.
不过现在用ZF2的项目都流产了。ZF2是我在内部主推的。后面项目启动后就不负责这块了。
当最后去看的时候,项目编写人员根本就没有ZF2的自带好的特性,连MVC都用的很少。
一问才知道ZF2框架太重,由于项目人员技术参差不齐,根本拿不下ZF2.
当时想着是公司内部框架,没有必要去考虑过多的性能问题,选择ZF2框架,只是想把大家的
编码给规范起来(编写内部规范文档,根本就没人记。),没想到最后成了这样。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
题主可以了解一下国内公司招聘要求
流行的是:ThinkPHP、CI、YII、Zend Framework 1
在BAT,php不是重点使用的编程语言。
知道baidu、weibo大量使用了Yaf,因为鸟哥就职过的原因。
360等大公司也会在内部或小型快速项目中使用了ThinkPHP。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
国内最常用的应该是CI和thinkPHP。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
适合入门同时知名度也非常高的 codeigniter(CI)
国内的 thinkphp
企业级框架,大公司开发一些后台功能偏向使用的可能是 Yii和Zend Framework
这几个框架学好找工作应该没问题
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
@俊森 说的不错
建议CodeIgniter
用过ThinkPHP不是很喜欢
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
ThinkPHP(丑而快),yaf(少而快),phalcon(快),yii(慢)
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
thinkPHP yii ci
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
国内的话 一般公司基本就是 tp、ci、yii以及zend 还有一些不知名的小框架
bat 等会考虑效率问题, 所以一般会采用 yaf 之类的框架, 新浪内部就大量在使用。
另外 建议学习框架得有个大致的方向 要学习的是这个框架的优点 也要了解缺点, 框架的组成部分(部件), 看的多了上手任何一个框架都基本不是难事,从工作上来看也是,公司用什么你就得适应 除非你是老大,可以自己决定选型。 不要靠着会某某框架去找公司, 这样的公司 对自己也没什么提高。
此外,要想提高技术水平,建议好好看几个国外框架, 了解最新的趋势以及一些行业标准 psr、composer 等等
可以是如下方向 (tp|ci)-&yii-&(laravel|symfony)
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
百度很多产品线用的自己的内部框架,不属于上面提到的任何一个。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
可以看看,算不上框架,只是个路由控制器,很精炼
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App  由于最近玩了PHP,我向来有个原则,学一门服务端语言至少得玩两个框架,前段时间用PHP写了些demo+小项目,看见身边有人在使用TP,于是乎鼓捣学习学习。如何学,无非也就是做个小demo;就目前看来现在都PHP框架都是以一个index.php文件作为入口,其他基本上就是路由加映射。
前期准备创建数据库与表:
# ************************************************************
# Sequel Pro SQL dump
# Version 4096
# http:///
# http:///p/sequel-pro/
# Host: 192.168.1.109 (MySQL 5.1.73)
# Database: thinkphp_init
# Generation Time: 2015-12-25 13:28:53 +0000
# ************************************************************
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
# Dump of table think_admin
# ------------------------------------------------------------
DROP TABLE IF EXISTS `think_admin`;
CREATE TABLE `think_admin` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
`adminname` char(60) NOT NULL COMMENT '管理员用户名',
`password` char(32) NOT NULL COMMENT '密码',
`email` char(60) NOT NULL COMMENT '邮箱',
`gender` tinyint(1) NOT NULL COMMENT '性别:1男、2女',
`tel` varchar(11) NOT NULL COMMENT '手机号',
`pic` varchar(255) NOT NULL COMMENT '头像的id,在resource表中',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态 1:正常 2:删除',
`login_time` int(11) NOT NULL COMMENT '最后登录时间',
`login_ip` char(30) NOT NULL COMMENT '最后登录ip',
`add_time` int(11) NOT NULL COMMENT '添加时间',
PRIMARY KEY (`id`),
UNIQUE KEY `admin_name` (`adminname`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='管理员表';
LOCK TABLES `think_admin` WRITE;
/*!40000 ALTER TABLE `think_admin` DISABLE KEYS */;
INSERT INTO `think_admin` (`id`, `adminname`, `password`, `email`, `gender`, `tel`, `pic`, `status`, `login_time`, `login_ip`, `add_time`)
(1,'zzz','f3abb86bd34cf4dda1dc60','',0,'','',1,,'',0),
(2,'tom','f3abb86bd34cf4dda1dc60','',0,'','',1,,'',0);
/*!40000 ALTER TABLE `think_admin` ENABLE KEYS */;
UNLOCK TABLES;
# Dump of table think_menu
# ------------------------------------------------------------
DROP TABLE IF EXISTS `think_menu`;
CREATE TABLE `think_menu` (
`id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(125) NOT NULL COMMENT '标题',
`icon` varchar(125) NOT NULL COMMENT '图标',
`module_name` varchar(125) NOT NULL COMMENT '模块名',
`controller_name` varchar(125) NOT NULL COMMENT '控制器名',
`action_name` varchar(125) NOT NULL COMMENT '方法名',
`param` varchar(125) NOT NULL COMMENT '参数',
`replace` varchar(125) NOT NULL COMMENT '替换',
`remark` varchar(255) NOT NULL COMMENT '介绍',
`pid` int(11) NOT NULL COMMENT '上级id',
`path` varchar(255) NOT NULL DEFAULT '0' COMMENT 'pid层级',
`level` tinyint(1) unsigned NOT NULL COMMENT '层级',
`view_order` int(11) NOT NULL DEFAULT '0' COMMENT '排序,越大越在前',
`is_show` tinyint(4) NOT NULL DEFAULT '1' COMMENT '是否显示 1:显示',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态 1:正常 2:删除',
`add_time` int(11) NOT NULL COMMENT '添加时间',
PRIMARY KEY (`id`),
KEY `level` (`level`),
KEY `pid` (`pid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='rbac 菜单、节点表';
LOCK TABLES `think_menu` WRITE;
/*!40000 ALTER TABLE `think_menu` DISABLE KEYS */;
INSERT INTO `think_menu` (`id`, `title`, `icon`, `module_name`, `controller_name`, `action_name`, `param`, `replace`, `remark`, `pid`, `path`, `level`, `view_order`, `is_show`, `status`, `add_time`)
(34,'index','','Admin','Index','index','','','',0,'--',3,0,0,1,),
(35,'index','','Admin','Admin','','','','',34,'---34',2,0,0,1,),
(36,'index','','Admin','Admin','index','','','',35,'---34-35',3,0,0,1,),
(37,'index','','Admin','Menu','','','','',34,'---34',2,0,0,1,),
(38,'index','','Admin','Menu','index','','','',37,'---34-37',3,0,0,1,),
(39,'menu_add','','Admin','Menu','menu_add','','','',37,'---34-37',3,0,0,1,),
(40,'menu_save','','Admin','Menu','menu_save','','','',37,'---34-37',3,0,0,1,),
(41,'index','','Admin','Admin','index','','','index',0,'0',1,0,0,1,);
/*!40000 ALTER TABLE `think_menu` ENABLE KEYS */;
UNLOCK TABLES;
# Dump of table think_resource
# ------------------------------------------------------------
DROP TABLE IF EXISTS `think_resource`;
CREATE TABLE `think_resource` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增id',
`name` char(255) NOT NULL COMMENT '上传文件的原名',
`type` char(64) NOT NULL COMMENT '上传文件的MIME类型',
`size` char(64) NOT NULL COMMENT '大小,单位字节',
`ext` char(64) NOT NULL COMMENT '后缀名',
`savename` char(64) NOT NULL COMMENT '保存后的名字',
`savepath` char(64) NOT NULL COMMENT '保存的路径',
`add_time` int(11) NOT NULL COMMENT '上传时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='上传资源表,如photo,file';
# Dump of table think_role
# ------------------------------------------------------------
DROP TABLE IF EXISTS `think_role`;
CREATE TABLE `think_role` (
`id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`pid` smallint(6) NOT NULL,
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态 1:正常 2:删除',
`remark` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `pid` (`pid`),
KEY `status` (`status`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='角色表';
LOCK TABLES `think_role` WRITE;
/*!40000 ALTER TABLE `think_role` DISABLE KEYS */;
INSERT INTO `think_role` (`id`, `name`, `pid`, `status`, `remark`)
(1,'添加',0,1,'');
/*!40000 ALTER TABLE `think_role` ENABLE KEYS */;
UNLOCK TABLES;
# Dump of table think_role_admin
# ------------------------------------------------------------
DROP TABLE IF EXISTS `think_role_admin`;
CREATE TABLE `think_role_admin` (
`role_id` int(11) NOT NULL,
`admin_id` int(11) NOT NULL,
KEY `group_id` (`role_id`),
KEY `user_id` (`admin_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='角色和用户的关系表';
# Dump of table think_role_menu
# ------------------------------------------------------------
DROP TABLE IF EXISTS `think_role_menu`;
CREATE TABLE `think_role_menu` (
`role_id` int(10) unsigned NOT NULL,
`menu_id` int(10) unsigned NOT NULL,
`level` tinyint(1) NOT NULL,
`module` varchar(125) NOT NULL,
KEY `groupId` (`role_id`),
KEY `nodeId` (`menu_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='角色和节点菜单的关系表';
LOCK TABLES `think_role_menu` WRITE;
/*!40000 ALTER TABLE `think_role_menu` DISABLE KEYS */;
INSERT INTO `think_role_menu` (`role_id`, `menu_id`, `level`, `module`)
(1,39,0,''),
(1,40,0,'');
/*!40000 ALTER TABLE `think_role_menu` ENABLE KEYS */;
UNLOCK TABLES;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
第一步:把TP整个包都放在应用工程的根目录下面,再建立一个index.php文件
index.php:
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c)
All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st &&
// +----------------------------------------------------------------------
// 应用入口文件
// 检测PHP环境
if(version_compare(PHP_VERSION,'5.3.0','&'))
die('require PHP & 5.3.0 !');
// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG',true);
// 是否开启生成安全文件
define('BUILD_DIR_SECURE', false);
// 定义应用目录
define('APP_PATH','./App/');
// 定义框架目录
define('THINK_PATH', './ThinkPHP/');
// 引入ThinkPHP入口文件
require THINK_PATH.'ThinkPHP.php';
// 亲^_^ 后面不需要任何代码了 就是如此简单
第二步:配置convention.php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c)
All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st &&
// +----------------------------------------------------------------------
* ThinkPHP惯例配置文件
* 该文件请不要修改,如果要覆盖惯例配置的值,可在应用配置文件中设定和惯例不符的配置项
* 配置名称大小写任意,系统会统一转换成小写
* 所有配置参数都可以在生效前动态改变
defined('THINK_PATH') or exit();
/* 应用设定 */
'APP_USE_NAMESPACE'
// 应用类库是否使用命名空间
'APP_SUB_DOMAIN_DEPLOY' =&
// 是否开启子域名部署
'APP_SUB_DOMAIN_RULES'
array(), // 子域名部署规则
'APP_DOMAIN_SUFFIX'
'', // 域名后缀 如果是
之类的后缀必须设置
'ACTION_SUFFIX'
'', // 操作方法后缀
'MULTI_MODULE'
true, // 是否允许多模块 如果为false 则必须设置 DEFAULT_MODULE
'MODULE_DENY_LIST'
array('Common','Runtime'),
'CONTROLLER_LEVEL'
'APP_AUTOLOAD_LAYER'
'Controller,Model', // 自动加载的应用类库层 关闭APP_USE_NAMESPACE后有效
'APP_AUTOLOAD_PATH'
'', // 自动加载的路径 关闭APP_USE_NAMESPACE后有效
/* Cookie设置 */
'COOKIE_EXPIRE'
// Cookie有效期
'COOKIE_DOMAIN'
// Cookie有效域名
'COOKIE_PATH'
// Cookie路径
'COOKIE_PREFIX'
// Cookie前缀 避免冲突
'COOKIE_HTTPONLY'
// Cookie httponly设置
/* 默认设定 */
'DEFAULT_M_LAYER'
'Model', // 默认的模型层名称
'DEFAULT_C_LAYER'
'Controller', // 默认的控制器层名称
'DEFAULT_V_LAYER'
'View', // 默认的视图层名称
'DEFAULT_LANG'
'zh-cn', // 默认语言
'DEFAULT_THEME'
// 默认模板主题名称
'DEFAULT_MODULE'
// 默认模块
'DEFAULT_CONTROLLER'
'Index', // 默认控制器名称
'DEFAULT_ACTION'
'index', // 默认操作名称
'DEFAULT_CHARSET'
'utf-8', // 默认输出编码
'DEFAULT_TIMEZONE'
// 默认时区
'DEFAULT_AJAX_RETURN'
// 默认AJAX 数据返回格式,可选JSON XML ...
'DEFAULT_JSONP_HANDLER' =&
'jsonpReturn', // 默认JSONP格式返回的处理方法
'DEFAULT_FILTER'
'htmlspecialchars', // 默认参数过滤方法 用于I函数...
/* 数据库设置 */
// 数据库类型
'192.168.1.109', // 服务器地址
'thinkphp_init',
// 数据库名
'zhenchaowen',
// 用户名Admin
'zhenchaowen',
'DB_PREFIX'
// 数据库表前缀
'DB_FIELDTYPE_CHECK'
// 是否进行字段类型检查
'DB_FIELDS_CACHE'
// 启用字段缓存
'DB_CHARSET'
// 数据库编码默认采用utf8
'DB_DEPLOY_TYPE'
0, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'DB_RW_SEPARATE'
// 数据库读写是否分离 主从式有效
'DB_MASTER_NUM'
1, // 读写分离后 主服务器数量
'DB_SLAVE_NO'
'', // 指定从服务器序号
'DB_SQL_BUILD_CACHE'
false, // 数据库查询的SQL创建缓存
'DB_SQL_BUILD_QUEUE'
// SQL缓存队列的缓存方式 支持 file xcache和apc
'DB_SQL_BUILD_LENGTH'
20, // SQL缓存的队列长度
'DB_SQL_LOG'
false, // SQL执行日志记录
'DB_BIND_PARAM'
false, // 数据库写入数据自动参数绑定
/* 数据缓存设置 */
'DATA_CACHE_TIME'
// 数据缓存有效期 0表示永久缓存
'DATA_CACHE_COMPRESS'
// 数据缓存是否压缩缓存
'DATA_CACHE_CHECK'
// 数据缓存是否校验缓存
'DATA_CACHE_PREFIX'
// 缓存前缀
'DATA_CACHE_TYPE'
// 数据缓存类型,支持:File|Db|Apc|Memcache|Shmop|Sqlite|Xcache|Apachenote|Eaccelerator
'DATA_CACHE_PATH'
TEMP_PATH,// 缓存路径设置 (仅对File方式缓存有效)
'DATA_CACHE_SUBDIR'
// 使用子目录缓存 (自动根据缓存标识的哈希创建子目录)
'DATA_PATH_LEVEL'
// 子目录缓存级别
/* 错误设置 */
'ERROR_MESSAGE'
'页面错误!请稍后再试~',//错误显示信息,非调试模式有效
'ERROR_PAGE'
// 错误定向页面
'SHOW_ERROR_MSG'
// 显示错误信息
'TRACE_MAX_RECORD'
// 每个级别的错误信息 最大记录数
/* 日志设置 */
'LOG_RECORD'
// 默认不记录日志
'LOG_TYPE'
'File', // 日志记录类型 默认为文件方式
'LOG_LEVEL'
'EMERG,ALERT,CRIT,ERR',// 允许记录的日志级别
'LOG_FILE_SIZE'
// 日志文件大小限制
'LOG_EXCEPTION_RECORD'
// 是否记录异常信息日志
/* SESSION设置 */
'SESSION_AUTO_START'
// 是否自动开启Session
'SESSION_OPTIONS'
array(), // session 配置数组 支持type name id path expire domain 等参数
'SESSION_TYPE'
'', // session hander类型 默认无需设置 除非扩展了session hander驱动
'SESSION_PREFIX'
'', // session 前缀
//'VAR_SESSION_ID'
'session_id',
//sessionID的提交变量
/* 模板引擎设置 */
'TMPL_CONTENT_TYPE'
'text/html', // 默认模板输出类型
'TMPL_ACTION_ERROR'
THINK_PATH.'Tpl/dispatch_jump.tpl', // 默认错误跳转对应的模板文件
'TMPL_ACTION_SUCCESS'
THINK_PATH.'Tpl/dispatch_jump.tpl', // 默认成功跳转对应的模板文件
'TMPL_EXCEPTION_FILE'
THINK_PATH.'Tpl/think_exception.tpl',// 异常页面的模板文件
'TMPL_DETECT_THEME'
// 自动侦测模板主题
'TMPL_TEMPLATE_SUFFIX'
// 默认模板文件后缀
'TMPL_FILE_DEPR'
'/', //模板文件CONTROLLER_NAME与ACTION_NAME之间的分割符
// 布局设置
'TMPL_ENGINE_TYPE'
// 默认模板引擎 以下设置仅对使用Think模板引擎有效
'TMPL_CACHFILE_SUFFIX'
// 默认模板缓存后缀
'TMPL_DENY_FUNC_LIST'
'echo,exit',
// 模板引擎禁用函数
'TMPL_DENY_PHP'
false, // 默认模板引擎是否禁用PHP原生代码
'TMPL_L_DELIM'
// 模板引擎普通标签开始标记
'TMPL_R_DELIM'
// 模板引擎普通标签结束标记
'TMPL_VAR_IDENTIFY'
// 模板变量识别。留空自动判断,参数为'obj'则表示对象
'TMPL_STRIP_SPACE'
// 是否去除模板文件里面的html空格与换行
'TMPL_CACHE_ON'
// 是否开启模板编译缓存,设为false则每次都会重新编译
'TMPL_CACHE_PREFIX'
// 模板缓存前缀标识,可以动态改变
'TMPL_CACHE_TIME'
// 模板缓存有效期 0 为永久,(以数字为值,单位:秒)
'TMPL_LAYOUT_ITEM'
'{__CONTENT__}', // 布局模板的内容替换标识
'LAYOUT_ON'
false, // 是否启用布局
'LAYOUT_NAME'
'layout', // 当前布局名称 默认为layout
// Think模板引擎标签库相关设定
'TAGLIB_BEGIN'
// 标签库标签开始标记
'TAGLIB_END'
// 标签库标签结束标记
'TAGLIB_LOAD'
true, // 是否使用内置标签库之外的其它标签库,默认自动检测
'TAGLIB_BUILD_IN'
'cx', // 内置标签库名称(标签使用不必指定标签库名称),以逗号分隔 注意解析顺序
'TAGLIB_PRE_LOAD'
// 需要额外加载的标签库(须指定标签库名称),多个以逗号分隔
/* URL设置 */
'URL_CASE_INSENSITIVE'
// 默认false 表示URL区分大小写 true则表示不区分大小写
'URL_MODEL'
// URL访问模式,可选参数0、1、2、3,代表以下四种模式:
// 0 (普通模式); 1 (PATHINFO 模式); 2 (REWRITE
模式); 3 (兼容模式)
默认为PATHINFO 模式
'URL_PATHINFO_DEPR'
// PATHINFO模式下,各参数之间的分割符号
'URL_PATHINFO_FETCH'
'ORIG_PATH_INFO,REDIRECT_PATH_INFO,REDIRECT_URL', // 用于兼容判断PATH_INFO 参数的SERVER替代变量列表
'URL_REQUEST_URI'
'REQUEST_URI', // 获取当前页面地址的系统变量 默认为REQUEST_URI
'URL_HTML_SUFFIX'
// URL伪静态后缀设置
'URL_DENY_SUFFIX'
'ico|png|gif|jpg', // URL禁止访问的后缀设置
'URL_PARAMS_BIND'
true, // URL变量绑定到Action方法参数
'URL_PARAMS_BIND_TYPE'
0, // URL变量绑定的类型 0 按变量名绑定 1 按变量顺序绑定
'URL_PARAMS_FILTER'
false, // URL变量绑定过滤
'URL_PARAMS_FILTER_TYPE'=&
'', // URL变量绑定过滤方法 如果为空 调用DEFAULT_FILTER
'URL_ROUTER_ON'
// 是否开启URL路由
'URL_ROUTE_RULES'
array(), // 默认路由规则 针对模块
'URL_MAP_RULES'
array(), // URL映射定义规则
/* 系统变量名称设置 */
'VAR_MODULE'
// 默认模块获取变量
'VAR_ADDON'
// 默认的插件控制器命名空间变量
'VAR_CONTROLLER'
// 默认控制器获取变量
'VAR_ACTION'
// 默认操作获取变量
'VAR_AJAX_SUBMIT'
// 默认的AJAX提交变量
'VAR_JSONP_HANDLER'
'callback',
'VAR_PATHINFO'
// 兼容模式PATHINFO获取变量例如 ?s=/module/action/id/1 后面的参数取决于URL_PATHINFO_DEPR
'VAR_TEMPLATE'
// 默认模板切换变量
'HTTP_CACHE_CONTROL'
'private',
// 网页缓存控制
'CHECK_APP_DIR'
// 是否检查应用目录是否创建
'FILE_UPLOAD_TYPE'
// 文件上传方式
'DATA_CRYPT_TYPE'
// 数据加密方式
第三步:编写相应的control和view:
AdminController.class.php:
* ThinkPHP的命名空间使用规范。注意:命名空间定义必须写在所有的PHP代码之前声明,否则会出错
* 命名空间和实际的控制器文件所在的路径是一致的,
namespace Admin\C
use Admin\Controller\CommonC
use Org\Util\R
class AdminController extends CommonController {
protected $page_num = 10;
public function index(){
$status = I('status', 0);
$keyword = I('keyword', '');
$list = array();
$where = array ();
if ($status) {
$where['status'] = $
$this-&assign('status', $status);
if ($keyword) {
$where['adminname'] = array('like', "%{$keyword}%");
$this-&assign('keyword', $keyword);
$model = D('Admin');
$count = $model-&where ($where)-&count (); // 查询满足要求的总记录数
$page = new \Admin\Org\Page ($count, $this-&page_num); // 实例化分页类 传入总记录数和每页显示的记录数
// 进行分页数据查询 注意limit方法的参数要使用Page类的属性
$order = 'id asc';
$list = $model-&where($where)-&order($order)-&limit($page-&firstRow.','.$page-&listRows)-&select();
$show = $page-&pageShow (); // 分页显示输出
$this-&assign ( 'list', $list ); // 赋值数据集
$this-&assign ( 'page', $show ); // 赋值分页输出
$this-&display(); // 输出模板
public function admin_add(){
$id = I('id', 0);
$model = D('Admin');
$info = false;
$role_user = array();
if ($id) {
$info = $model-&find($id);
// 角色与用户关系
$role_user = D('Role_admin')-&where(array('admin_id' =& $id))-&getField('role_id', true);
$role_list = D('Role')-&where(array('status' =& 1))-&select();
if ($role_list) {
foreach ($role_list as &$val) {
if (in_array($val['id'], $role_user)) {
$val['is_selected'] = 1;
$val['is_selected'] = 0;
$this-&assign('role_list', $role_list);
$this-&assign('info', $info);
$this-&display();
public function save(){
$id = I('id', 0);
$adminname = I('adminname', '');
$password = I('password', '');
$re_password = I('re_password', '');
$role_id = I('role_id', array());
if (empty($adminname)) {
$this-&out('error', '请填写用户名');
$model = D('Admin');
// 验证通过 可以进行其他数据操作
unset($_POST['role_id']);
if (empty($id)) {
$_POST['password'] = md5($password);
$_POST['re_password'] = md5($re_password);
$_POST['add_time'] = time();
$tmp = $model-&create();
if (!$tmp){
// 如果创建失败 表示验证没有通过 输出错误提示信息
$this-&out('error', $model-&getError());
$result = $model-&add();
$where['adminname'] = $
$where['id'] = array('neq', $id);
$info = $model-&where($where)-&find();
if ($info) {
$this-&out('error', '该名称已经存在了!');
if (!empty($password) && !empty($re_password)) {
if ($password != $re_password) {
$this-&out('error', '密码与确认密码不一致!');
$_POST['password'] = md5($password);
unset($_POST['re_password']);
unset($_POST['password']);
unset($_POST['re_password']);
$result = $model-&save($_POST);
$model_role_admin = D('Role_admin');
// 先删除,再插入 ,角色与用户对应关系
$resu = $model_role_admin-&where(array('admin_id' =& $id))-&delete();
if ($role_id) {
if ($role_id) {
foreach ($role_id as $val) {
$data['role_id'] = $
$data['admin_id'] = $
$re = $model_role_admin-&data($data)-&add();
if ($result || $resu || $re) {
$this-&out('ok', '保存成功');
$this-&out('error', '保存失败');
// 用户删除 加入回收站
public function delete(){
$id = I('id', 0);
if (empty($id)) {
$this-&out('error', '请选择要删除的记录!');
$model = D('Admin');
$arr = explode(',', $id);
$data['id'] = array('in', $arr);
$data['status'] = 2;
$result = $model-&save($data);
if ($result) {
$this-&out('ok', '删除成功');
$this-&out('error', '删除失败');
// 用户还原
public function reduction(){
$id = I('id', 0);
if (empty($id)) {
$this-&out('error', '请选择要还原的记录!');
$model = D('Admin');
$arr = explode(',', $id);
$data['id'] = array('in', $arr);
$data['status'] = 1;
$result = $model-&save($data);
if ($result) {
$this-&out('ok', '还原成功');
$this-&out('error', '还原失败');
// 用户彻底删除
public function delete_really(){
$id = I('id', 0);
if (empty($id)) {
$this-&out('error', '请选择要还原的记录!');
$model = D('Admin');
$arr = explode(',', $id);
$data['id'] = array('in', $arr);
$result = $model-&where($data)-&delete($data);
if ($result) {
$this-&out('ok', '还原成功');
$this-&out('error', '还原失败');
&include file="Public/side" /&
&div class="col-xs-9" role="main"&
&form action='__URL__/index' id="js_search" method="get"&
&ol class="breadcrumb"&
&li class="active"&
&a href="__URL__/index/status/0"&&span class="label &if condition='$status eq 0'&label-default&else/&label-info&/if&"&全部&/span&&/a&
&a href="__URL__/index/status/1"&&span class="label &if condition='$status eq 1'&label-default&else/&label-success&/if&"&正常&/span&&/a&
&a href="__URL__/index/status/2"&&span class="label &if condition='$status eq 2'&label-default&else/&label-warning&/if&"&回收站&/span&&/a&
&input type="text" class="form-control" name="keyword" value="{$keyword}" placeholder="用户名" style="float:"&
&td&&button type="submit" class="btn btn-sm btn-primary"&搜索&/button&&/td&
&td colspan="2"&
&span class="nav-addbtn"&
&a href="/article/edit/id/0"&
&a href="__URL__/admin_add" class="btn btn-sm btn-success" style="float:"&添加管理员&/a&
&div class="table-responsive"&
&table class="table table-striped"&
&th&ID&/th&
&th&用户名&/th&
&th&性别&/th&
&th&邮箱&/th&
&th&电话&/th&
&th&最后登录时间&/th&
&th&操作&/th&
&volist name="list" id="val"&
&td&{$val.id}&/td&
&td&{$val.adminname}&/td&
&td&{$val.gender}&/td&
&td&{$val.email}&/td&
&td&{$val.tel}&/td&
&td&{$val.login_time|date='Y-m-d H:i:s', ###}&/td&
&a href="__URL__/admin_add/id/{$val.id}" class="btn btn-primary btn-xs"&编辑&/a&
&if condition="$val.status eq 1"&
&a href="__URL__/delete/id/{$val.id}" class="btn btn btn-warning btn-xs delete_one"&删除&/a&
&a href="__URL__/reduction/id/{$val.id}" class="btn btn-success btn-xs reduction"&还原&/a&
&a href="__URL__/delete_really/id/{$val.id}" class="btn btn-danger btn-xs delete_really"&彻底删除&/a&
&div class="my_page"&
&script type="text/javascript"&
//var $status = '{$status}';
&include file="Public/footer" /&
访问应用:
http://mysites:8405/Thinkphp_init-master/index.php/Admin/Menu/index
/super-d2/codeigniter_demo
/info/122.html
/document/308.html
阅读(...) 评论()

我要回帖

更多关于 大神p图已笑疯 的文章

 

随机推荐