6月1日,小雨。“ 梅子金黄杏子肥,麦花雪白菜花稀。
日长篱落无人过,唯有蜻蜓蛱蝶飞。”
七、MVC模式
ThinkPHP的MVC开发机制例如以下:
M
Model层 模型:就是数据库操作类(通过数据库操作类去操作各个表)。
V View层 视图:指模版。
C Controller层 控制器:就是通过控制器来实现模版,模型之间的控制关系。
MVC架构中,Controller是必须的。由于controller掌管着业务逻辑的控制权。
通常的流程是:请求从入口文件进入。然后就经过路由匹配。最后把控制权交到对应的controller上。開始处理业务,model和view的调用都由controller的代码决定。换句话说,在Controller中能够不用Model和View,仅仅是这样一来,就表示你的这个业务不与数据库交互(Model),也不产生不论什么表现性的输出(View)。
八、后台编写
1、 改动admin/Lib/Action/IndexAction.class.php。例如以下:
<?php // 本类由系统自己主动生成,仅供測试用途 class IndexAction extends Action { public function index() { if (session ( '?username' )) { } else { $this->error ( '亲,您好,请先登录!', U ( '/Login/index/' ) ); } } }
代码说明:
要推断一个session值是否已经设置,能够使用 session('?name'); 用于推断名称为name的session值是否已经设置 相当于: isset($_SESSION['name']);
U ( '/Login/index/' )的含义是找Login模块下的index方法。
2、编写adminLibActionLoginAction.class.php
<?php class LoginAction extends Action { function index() { // 配置页面显示内容 $this->assign ( 'title', '后台管理系统' ); $this->display (); } }
在Action中使用assign方法能够给模板变量赋值。那么使用内置的模板引擎输出变量,仅仅须要在模版文件使用:{$title}。模板编译后的结果就是<?
php echo ($title); ?
>,最后执行的时候就能够在标签位置显示ThinkPHP的输出结果。
注意模板标签的{和$之间不能有不论什么的空格。否则标签无效。
3、编写adminTplLoginindex.html
直接把后台模板,admin-templates.rar里面的login.html里面的所有内容拷入。
前后台模板下载地址:http://download.csdn.net/detail/zwszws/8773601
把下载的前端模板里面目录css、images和scripts里面的文件所有分别放入publicCssadmin和publicImagesadmin以及publicJsadmin里面.
改动index.html文件中的相关资源路径。如:
<link rel="stylesheet" href="__PUBLIC__/Css/admin/reset.css"
<script type="text/javascript" src="__PUBLIC__/Js/admin/jquery-1.3.2.min.js"></script>
<img id="logo" src="__PUBLIC__/Images/admin/logo.png" alt="Simpla Admin logo" />
4、再次訪问:http://localhost/MyFirstThinkPHP_1/admin.php 。呵呵,后台登录页面出来了。
5、加个验证码
改动adminTplLoginindex.html文件。增加
<p> <label>验证码</label> <input class="text-input" type="text" name="verify"/> <img src="__APP__/Common/verify" onclick="show(this)"/> </p> <script> function show(obj){ obj.src="__APP__/Common/verify"; } </script>编写adminLibActionCommonAction.class.php
<?4、再次訪问:http://localhost/MyFirstThinkPHP_1/admin.php 。呵呵。验证码出来了!php class CommonAction extends Action{ function verify(){ //导入验证码类 import("ORG.Util.Image"); /* * 參数1:验证码长度,默认4 * 參数2:类型。0为字母。1为数字。2为大写字母。3为小写字母。4为中文 * 參数3:图片类型,默认png格式,若server没有开PNG,就改成其它格式 * 參数4:图片宽度(依据长度自己主动计算) * 參数5:图片高度,默认22个像素 * 參数6:验证码保存在Session的名称 'verify' */ Image::buildImageVerify(4,1,'png',70,30);//静态方法 } } ?
>