zoukankan      html  css  js  c++  java
  • ThinkPHP控制器

    ThinkPHP控制器Controller

    1、什么是控制器

    在MVC框架中,其核心就是C(Controller)控制器。主要用于接收用户请求,处理业务逻辑。

    2、控制器的定义

    在一个ThinkPHP系统中,其可以分为多个模块(如Home前台模块,Admin后台模块等),我们在定义控制器时都需要定义在相应的模块内。定义规范如下:

    控制器名称(首字母大写)+Controller(关键词)+.class.php(类文件后缀)

    如:IndexController.class.php

        NewsController.class.php

    3、编写控制器代码

    ① 定义命名空间

    命名空间就是为了解决php中类、函数以及常量重名问题。

    namespace 空间名称

    特别说明:命名空间的空间名称与路径是没有任何关系的,但是在ThinkPHP框架中其与ThinkPHP框架的路径是想对应的,谨记!!!

    ② 引入核心控制器

    use 命名空间

    use ThinkController;

    ③ 定义自定义控制器,如下图所示:

    4、控制器的访问规则(URL调度模式)

    在ThinkPHP框架中,一共有4中URL调度模式,默认使用的是第2中,PATHINFO调度模式:

    http://自定义域名/index.php(入口文件)/Home(模块名称)/News(控制器名称)/index(操作方法)

    ① 普通调度模式

    参数说明:

    基本语法:

    http://自定义域名/index.php(入口文件)?m=Home(模块)&c=News(控制器名称)&a=index(操作方法)

    如果想在ThinkPHP中使用普通调度模式,需要在自定义配置文件中设置URL_MODEL参数如下:

    运行结果:

    ② PATHINFO调度模式

    PATHINFO调度模式是ThinkPHP中默认的URL调度模式,其号称是最友好的链接形式,有利于SEO优化,基本语法:

    http://自定义域名/index.php(入口文件)/Home(模块名称)/News(控制器名称)/index(操作方法)

    ③ REWRITE重写模式(防盗链)

    基本语法:

    http://自定义域名/Home(前台模块)/News(控制器名称)/index(操作方法)

    Rewrite重写模式详细设置步骤:

    1)httpd.conf配置文件中加载了mod_rewrite.so模块

    2)AllowOverride None 将None改为 All

    记住:设置完成后要重启Apache服务器!

    3)确保URL_MODEL设置为2

    4)把下面的内容保存为.htaccess文件放到入口文件的同级目录下

    <IfModule mod_rewrite.c>

    Options +FollowSymlinks

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

    </IfModule>

    设置成功后,访问效果如下图所示:

    ④ 兼容模式

    基本语法:

    http://自定义域名/index.php(入口文件)?s=Home(前台模块)/News(控制器)/index(操作方法)

    设置URL_MODEL为3即可,如下图所示:

    运行结果:

    5、开启ThinkPHP代码调试

    在实际项目开发中,肯定会遇到相关错误信息,但是默认ThinkPHP框架显示的是友好错误,如下图所示:

    为了能实现更好的代码调试效果,可以在项目的入口文件中定义以下参数:

    记住:项目上线后,这行代码要注释掉!

    6、空操作

    1)定制错误页面

    2)优化url链接

    7、空控制器

    1)定制错误页面

    2)优化url链接

    8、划分项目前后台模块(Home、Admin)

    ThinkPHP3.2.3模块结构划分:

    Home模块名称

    Controller控制器

    Model模型

    View视图

    Admin模块名称

    Controller控制器

    Model模型

    View视图

     

    ① 在Application文件夹下创建Admin文件夹作为后台模块

    ② 在Admin文件夹下创建Controller/Model/View三个文件夹

    ③ 配置文件共享问题

    在Application项目目录中,一共有两个模块(Home、Admin),那这个配置文件应该怎么设置呢?

    1)每个模块下单独使用一个配置文件config.php(当前配置文件只对当前模块有用)

    2)两个模块公用一个配置文件,直接写在Application/Common/Conf/config.php文件中

     

    ④ 设置配置文件

    案例:在后台定义登陆模块

    ① 在Application/Admin/Controller文件夹中创建一个Public控制器

    ② 编写代码如下图所示:

    ③ 通过URL调度模式2访问后台登陆模块

    9、URL大小写

    在Window操作系统中,其对URL大小写并不敏感(不区分大小写)。但是其在Linux操作系统中又是严格区别大小写的,所以我们可以通过设置以下参数让ThinkPHP不区分大小写。

    10、页面跳转(带可视化模板)

    $this->success(msg,url,time) :成功跳转

    $this->error(msg,url,time) :失败跳转

    示例代码:

    如果在实际项目开发中,需要更改success与error的模板,可以通过以下参数获取模板信息:

    11、页面重定向

    $this->redirect(url,array('id'=>1),5,"页面跳转中");

    参数说明:

    url:跳转链接

    array('id'=>1) :传递参数id为1

    5:等待时间

    "页面跳转中" :提示信息…

  • 相关阅读:
    javascript动画效果之匀速运动(修订版)
    javascript动画效果之缓冲动画
    【数据分析 R语言实战】学习笔记 第十一章 对应分析
    【数据分析 R语言实战】学习笔记 第八章 方差分析与R实现
    【MATLAB 从零到进阶】day2 矩阵 数组
    《Python基础教程》 读书笔记 第九章 魔法方法、属性和迭代器(上)
    《spss统计分析与行业应用案例详解》:实例十二 卡方检验
    【数据分析 R语言实战】学习笔记 第七章 假设检验及R实现
    《spss统计分析与行业应用案例详解》:实例九 单一样本t检验
    【数据分析 R语言实战】学习笔记 第六章 参数估计与R实现(下)
  • 原文地址:https://www.cnblogs.com/nyxd/p/5366061.html
Copyright © 2011-2022 走看看