tp5学习笔记4

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

1、在前台控制器目录下(/var/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://localhost/index.php/Index/user/index

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

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

    3、命名空间必须和文件名对应
        namespace app\index\controller;
        /var/www/tp5/application/index/controller

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

        http://localhost/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、方法所在路径
    /var/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、默认文件位置
        /var/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、在系统模板目录下 (/var/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、系统类

1
2
3
4
5
6
Config
Env
Controller
View
Route
URL

12、系统方法

1
2
3
4
5
6
config(); 
view();
controller();
action();
url();
dump();
  • thinkCMF上传图片

    thinkCMF上传图片 1、要使用这个功能,首先要引入框架自带的admin.js或者frontend.js文件 再上传的地方添加 1234567891011121314151617181920212223242526...

    thinkCMF上传图片
  • 小程序开发

    小程序开发 获取access_token要将申请的测试号的appid和secret填在相应的位置,而不是填公众号的appid和secret。

    小程序开发
  • global与GLOBAL区别

    global与GLOBAL区别 1.有些场合需要全局变量的出现,如下例子:<?php$name=”why”;//定义变量name,并初始化function echoName(){//试图引用函数外面的变量echo “m...

    global与GLOBAL区别
  • PHP取整

    PHP取整 1.直接取整,舍弃小数,保留整数:intval($a);2.四舍五入取整:round($a);3.向上取整,有小数就加1:ceil($a);4.向下取整:floor($a)。

    PHP取整
  • 为什么PHP变量以$开头

    PHP变量 ​ Because PHP was based on Perl which used $, though the symbols Perl used were meaningful andplenty us...

    为什么PHP变量以$开头
  • PHP超全局变量

    PHP超全局变量 PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。 PHP 超级全局变量列表: $GLOBALS $G...

    PHP超全局变量
  • 面试准备

    PHP面试题目 1、阿里PHP面试​ https://blog.csdn.net/qishouzhang/article/details/47007177 1、get与post的区别​ 最直观的区别就是GET把参数...

    面试准备
  • tp5学习笔记9

    tp5学习笔记9 1、验证器1) 控制器中使用验证器 // 实例化验证器类 $validate=new Validate( [ &q...

    tp5学习笔记9
  • tp5学习笔记8

    tp5学习笔记8 1、视图a) 加载页面 1、继承系统控制器类 return $this->fetch(参数1,参数2,参数3,参数4); 参数1(字符串): 模板...

    tp5学习笔记8
  • tp5学习笔记7

    tp5学习笔记7 1、模型(model)数据模型 2、新建数据模型​ 1) 手动新建 在model目录下 新建 User.php // 声明命名空间 namespace a...

    tp5学习笔记7