美文网首页ThinkPhp5入门
TP5控制器的进阶高级知识笔记.md

TP5控制器的进阶高级知识笔记.md

作者: 傲娇的泰迪 | 来源:发表于2018-01-10 12:32 被阅读0次

    1、怎么自定义访问控制器层?

    在自定义配置文件config/config.php中添加:

    // 默认的访问控制器层
    ​'url_controller_layer'   => 'controller',
    

    可以将'controller'改为任意自定义名,如'api'。
    这时也要把app\index\下的controller文件夹名改为api,api下的所有控制器的命名空间也要更改。

    2、怎么创建多级控制器?

    在app\index\controller文件夹下添加文件夹如'user',在user中添加Demo.php文件。
    那么要在url中访问其中的index方法就要输入:

    tp5.com/index/user.demo/index
    

    3、为什么要创建空操作和空控制器?

    如果在url中访问了一个不存在的方法,为了不报错,而显示自定义的提示,就要在控制器中写一个如下的方法:

    public function _empty($method)
    {
      return '你访问的方法'.$method.'不存在';
    }
    

    如果在url中访问了一个不存在的控制器,为了不报错,而显示自定义的提示,就要在thinkphp\convention.php中找到’empty_controller' => 'Error',将其复制到自定义config.php中,'Error'可自己改。
    然后在app\index\controller文件夹下新建一个Error.php文件,最好在其中同样填入如下代码:

    public function _empty($method)
    {
      return '你访问的方法'.$method.'不存在';
    }
    

    4、怎么在控制器中使用trait?

    例如在class Index类中开头写:

    use \traits\controller\Jump;
    

    就引入了traits中Jump控制器,该控制器中有个success方法,我们现在想用这个方法,所以:

    public function demo($name)
    {
      if ($name=='bilibili'){
        $this->success('正在跳转到哔哩哔哩动画','http://www.bilibili.com');
      }
    }
    

    在url中就可以写:

    tp5.com/index/index/demo/name/bilibili
    

    就可以访问了。

    5、什么是单一模块?什么时候需要使用它?

    如果应用比较简单,不需要划分模块的时候,就可以使用单一模块。
    单一模块,就是没有模块,模块就是应用,应用就是模块。
    开启单一模块:
    在\thinkphp\convention中找到'app_multi_module' => true,复制到自己的config.php中,修改true为false,即可。
    然后把index模块下的东西全部移到application下。其他相应的如命名空间也要更改。

    相关文章

      网友评论

        本文标题:TP5控制器的进阶高级知识笔记.md

        本文链接:https://www.haomeiwen.com/subject/rvvnnxtx.html