ThinkPHP5.0框架开发--第5章 TP5.0 控制器

第5章 TP5.0 控制器

==============================================

上次复习

1、路由

a、有利于SEO优化

b、简洁方便记忆

2、路由模式

1、普通模式(PATHINFO)

http://www.tp.com/index.php/Index/Index/index

2、混合模式

支持PATHINFO和路由

3、强制模式

只支持路由模式

4、模式切换和配置文件有关

// 是否开启路由

'url_route_on'           => true,

// 是否强制使用路由

'url_route_must'         => false,

3、设置路由

0、配置文件

C:\AppServ\www\tp5\application\Route.php

1、动态设置当个路由

use think\Route;

Route::rule();

Route::get();

Route::post();

Route::delete();

Route::put();

2、动态批量设置路由

Route::rule([

'路由规则1'=>'路由地址和参数',

'路由规则2'=>['路由地址和参数','匹配参数(数组)','变量规则(数组)']

...

],'','请求类型','匹配参数(数组)','变量规则');

3、配置文件注册路由

return[

'new/:id' => 'News/read',

'blog/:id' => ['Blog/update',['method'=>'post|put'],['id'=>'\d+']],

];

==============================================

今日学习

1、新建控制器(前台模块为例)

1、在前台控制器目录下(C:\AppServ\www\tp5\application\index\controller) 新建控制器文件 User.php

2、User.php文件中如何书写

<?php

// 声明命名空间

namespace app\index\controller;

// 声明控制器

class User{

// 声明方法

public function index(){

return "我是User控制器下的index方法";

}

}

3、地址栏访问

http://www.tp.com/index.php/Index/user/index

4、注意:

1、控制器文件名必须首字母大写,文件名采用驼峰命名。

2、控制器名必须跟文件名一一对应

3、命名空间必须和文件名对应

namespace app\index\controller;

C:\AppServ\www\tp5\application\index\controller

4、如果控制器名字采用驼峰命名 UserInfo.php

http://www.tp.com/index.php/Index/user_info/index (加一个下划线)

2、控制器如何加载页面

1、系统View类

$view=new \think\View;

return $view->fetch();

use think\View;

$view=new View();

return $view->fetch();

2、系统Controller类

1、需要继承系统控制器类

use think\Controller;

// 声明控制器

class User extends Controller

2、直接使用系统控制器类的方法

return $this->fetch();

3、系统函数

return view();

3、数据输出

1、在应用配置文件中可以设置数据返回格式

'default_return_type'    => 'json', #默认是html

2、ajax请求的时候如何返回数据

'default_ajax_return'    => 'json',

4、控制器的初始化

1、控制器初始化方法必须继承系统控制器

// 控制器的初始化方法

public function _initialize(){

echo "我是初始化方法";

}

2、只要调用控制器下的任意方法,都会先找初始化方法

3、控制器初始化方法的使用

1、可以用来提取控制器下公共的代码

2、后台权限把控

5、前置操作

0、前置方法 把一些公共的设置提取成方法进行调用

1、前置方法必须结合系统控制器

2、核心设置

// 前置方法属性

protected $beforeActionList=[

'one',

// 不想让谁使用前置方法two

'two'=>['except'=>"index"],

// 仅仅可以让谁使用前置方法three

'three'=>['only'=>'index'],

];

6、页面跳转

0、页面跳转基于系统控制器类,所以控制器必须继承系统控制器

1、方法所在路径

C:\AppServ\www\tp5\thinkphp\library\traits\controlle\Jump.php

2、跳转方式

a、成功跳转

// $this->success(提示信息,跳转地址,用户自定义数据,跳转跳转,header信息);

// 跳转地址未设置时 默认返回上一个页面

$this->success('跳转成功',url('index/index'));

b、失败跳转

$this->error('登录失败');

3、跳转方法给模板页面的数据

1、$code 返回的状态码 成功 1 失败 0

2、$msg 页面的提示信息

3、$wait 等待时间

4、$url 制定跳转页面 默认返回上一个页面

5、$data 用户返回的数据

4、相关配置文件

// 默认跳转页面对应的模板文件

'dispatch_success_tmpl'  => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',

'dispatch_error_tmpl'    => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',

4、修改成功和失败的模板页面

a、修改默认文件

1、默认文件位置

C:\AppServ\www\tp5\thinkphp\tpl\dispatch_jump.php

2、根据原有代码进行修改

在成功失败模板页面进行修改

b、用户自定义页面跳转模板

1、修改配置文件

'dispatch_success_tmpl'  => THINK_PATH . 'tpl' . DS . 'success.tpl',

'dispatch_error_tmpl'    => THINK_PATH . 'tpl' . DS . 'error.tpl',

2、在系统模板目录下 (C:\AppServ\www\tp5\thinkphp\tpl) 新建 success.php 和error.php

3、自定义书写跳转页面

7、重定向

1、作用:

重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置

2、使用:

redirect('跳转地址','其他参数',code,'隐士参数');

$this->redirect('index/index',['id'=>100,'name'=>'abc']);

8、空控制器和空操作

1、空操作

# 主要解决一些用户恶意的地址栏输入,报错影响交互

public function _empty(){

$this->redirect('index/index');

}

2、空控制器

// 声明命名空间

namespace app\index\controller;

use think\Controller;

// 声明控制器

class Error extends Controller{

// index

public function index(){

$this->redirect('index/index');

}

// 空操作

public function _empty(){

$this->redirect('index/index');

}

}

3、注意:

1、网站上线的时候每一个控制器都必须添加空操作

2、不论前台后台都需要写一个空控制器

9、使用命令行

1、切换到网站的根目录下

2、输入php think

3、使用

1、创建控制器

php think make:controller app\index\controller\Goods

2、创建数据模型

php think make:model app\index\model\Goods

3、清空runtime 临时文件

php think clear

10、资源控制器

1、使用命令行创建控制器

php think make:controller app\index\controller\Goods

2、资源控制器一般配合资源路由使用

11、系统类

Config

Env

Controller

View

Route

URL

12、系统方法

config();

view();

controller();

action();

url();

dump();

ThinkPHP5.0框架开发--第5章 TP5.0 控制器的更多相关文章

  1. ThinkPHP5.0框架开发--第4章 TP5.0路由

    ThinkPHP5.0框架开发--第4章 TP5.0路由 第4章 TP5.0 路由 ================================================== 上次复习 1. ...

  2. ThinkPHP5.0框架开发--第3章 TP5.0 配置

    ThinkPHP5.0框架开发--第3章 TP5.0 配置 第3章 TP5.0 配置 ========================================================= ...

  3. ThinkPHP5.0框架开发--第1章 Tp5.0安装

    ThinkPHP5.0框架开发--第1章 Tp5.0安装 第1章 Tp5.0 安装 ======================================================== 今 ...

  4. ThinkPHP5.0框架开发--第2章 TP5.0架构

    ThinkPHP5.0框架开发--第2章 TP5.0架构 第2章 TP5.0架构 ================================================== 上次复习 1.如 ...

  5. ThinkPHP5.0框架开发--第11章 TP5.0 杂项

    ThinkPHP5.0框架开发--第11章 TP5.0 杂项 第11章 TP5.0 杂项 =============================================== 今日学习 1. ...

  6. ThinkPHP5.0框架开发--第10章 TP5.0验证器

    ThinkPHP5.0框架开发--第10章 TP5.0验证器 第10章 TP5.0验证器 ======================================= 今日学习 1.验证器 1) 控 ...

  7. ThinkPHP5.0框架开发--第9章 TP5.0视图和模板

    ThinkPHP5.0框架开发--第9章 TP5.0视图和模板 第9章 TP5.0视图和模板 ===================================================== ...

  8. ThinkPHP5.0框架开发--第8章 TP5.0 模型

    ThinkPHP5.0框架开发--第8章 TP5.0 模型 第8章 TP5.0 模型 ================================================= 今日学习 1. ...

  9. ThinkPHP5.0框架开发--第7章 TP5.0数据库操作

    ThinkPHP5.0框架开发--第7章 TP5.0数据库操作 第7章 TP5.0数据库操作 ===================================================== ...

随机推荐

  1. [C++设计模式] strategy 策略模式

    依照陈硕老师的观点.c++里有面向过程编程.面向对象编程,基于对象编程(面向接口编程)和泛型编程.四种思路都各有其适用场景. 面向过程编程是沿袭C的结构化编程思路,OOP是C++的核心,也是现代高级编 ...

  2. Linux目录结构(一)

    linux文件系统的最顶端是/,称为linux的root,所有的目录.文件.设备都在/之下. 文件类型 linux有四种基本文件系统类型:普通文件.目录文件.连续文件和特殊文件.可以用file命令来识 ...

  3. Edge浏览器+微软小娜

  4. SwipeRefreshLayout实现下拉刷新上滑加载

    1. 效果图 2.RefreshLayout.java package myapplication.com.myapplication; import android.content.Context; ...

  5. Photoshop保存文件时的选项

    以 JPEG 格式存储 您可以使用"存储为"命令以 JPEG (*.jpg) 格式存储 CMYK.RGB 和灰度图像.JPEG 通过有选择地扔掉数据来压缩文件大小.也可以使用&qu ...

  6. 别让好想法埋没:如何进行APP开发?

    经常和许多创业者讨论,发现很多人想法都不错,但是都不知道该如何实现,今天就如何引导大家走出第一步写一篇文章,很多人通常误会一件事情,认为程序员开发可以一步步把自己的想法拼接出来,我有一个功能点,就让程 ...

  7. CDR X6打了3折,再送魔镜插件,是真的么?

    明人不说暗话,我.要.来.个.小.资.讯. CDR X6打了3折,再送魔镜插件,是真的么?   先来说说CorelDRAW,CorelDRAW众所周知,软件的确不便宜啊,对于个人来说,相当于一个高配苹 ...

  8. ZBrush软件特性之Marker标记调控板

    在ZBrush®中使用Marker标记调控板来记忆物体属性,因此能在任何时间回到标记并使用它给其他物体或改变物体作为参考点. ZBrush软件下载:http://pan.baidu.com/s/1sl ...

  9. 阿里云大学Linux学习路线图(学+测)重磅上线!

    推荐:阿里云大学—Linux运维学习路线(点击获取免费课程) 全新“学+测”模式 每阶段包含初.中.高三个难度等级考试,学完即测,找准短板,助您全方位自测掌握程度 课程系统全面 课程体系涵盖从Linu ...

  10. leetcode525. 连续数组 python

    给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组. 示例 1: 输入: [0,1] 输出: 2 说明: [0, 1] 是具有相同数量0和1的最长连续子数组. 示例 2: 输入: ...