• thinkphp 5.1 url、控制器和模版渲染


    URL解析模式

    http://serverName/index.php/模块/控制器/操作/参数/值...;
    如果wamp环境没有开启伪静态,那么ThinkPHP不支持URL重写。
    没有开启URL重写,那只能使用PATH_INFO模式,如下:
    public/index.php?s=test/abc/eat/who/主人老李;
    

    控制器

    // 是否自动转换URL中的控制器和操作名
    'url_convert'            => true,
    // 例子: true:HelloWorld hello_world
    // 例子: false:HelloWorld HelloWorld 
    

    渲染输出

    1、ThinkPHP直接采用方法内return返回的方式直接就输出了。

    2、使用json输出,直接采用json函数;

    $data = ['a'=>1,'b'=>2,'c'=>3,];
    return json($data);
    

    3、使用view输出模版,开启错误提示,可知道如何创建模版;

    return view();
    

    4、默认输出方式为html格式输出,如果返回的是数组,则会报错;

    5、可以更改配置文件里的默认输出类型,更改为json;

    return ['user'=>'Lee','age'=>18];
    'default_return_type' => 'json',
    

    6、如果继承了基类控制器,那么可以定义控制器的初始化方法;initialize()

    7、initialize()方法会在调用控制器方法之前执行;

    protected function initialize(){
        // parent::initialize();
        echo "init";
    }
    

    8、initialize()方法不需要任何返回值,输出用php方式,return无效。

    控制器前置操作

    1、继承Controller 类后可以设置一个$beforeActionList属性来创建前置方法;

    protected $beforeActionList = [
        'first',
        // one 方法执行不调用second前置
        'second'=>['except'=>'one'],
        // third 前置只能通过地用用one和two方法触发
        'third'=>['only'=>'one,two']
    ];
    
    protected function first(){
        echo "first<br>";
    }
    

    跳转和重定向

    1、Controller类提供了两个跳转的方法,success(msg,url) 和 error(msg)

    public function index (){
        if($this->flag){
            // 如果不指定url,则返回$_SERVER['HTTP_REFERER']
            $this->success('成功','../');
        }else{
            // 自动返回前一页
            $this->error('失败');
        }
    }
    

    2、成功或错误有一个固定的页面模版:thinkphp/tpl/dispatch_jump.tpl;

    3、在app.php配置文件中,可以自定义跳转模版页面

    // 默认跳转页面对应的模版文件
    'dispatch_success_tmp'=>Env::get('think_path')
    

    空方法和空控制器

    1、当访问了一个未定义的方法,系统会报错,我们可以使用_empty()来拦截;

    public function _empty($name){
        return '不能存在的方法'.$name;
    }
    

    2、当访问了一个未定义的控制器,系统也会报错,我们可以使用Error类来拦截;

    Class Error {
        public function index(Request $q){
            return '当前控制器不存在'.$q->controller();
        }
    }
    本文欢迎转载,转载请注明出处,如果涉及侵权,请企鹅:723887809。
  • 相关阅读:
    oracle 查询 主机名和对应的IP地址
    mysql 常用命令
    linux 下 mysql-5.5.8 安装
    oracle批量插入数据(测试)
    Oracle数据库查询优化(上百万级记录如何提高查询速度)
    针对分区表一个月3个分区定期清理脚本
    C语言中%p,%u,%lu都有什么用处
    MAC下查看环境变量的值的方法
    Mac 终端 Linux 命令总结(简单命令)
    TypeScript学习-TypeScript环境配置
  • 原文地址:https://www.cnblogs.com/toxufe/p/14335777.html
Copyright © 2020-2023  润新知