ThinkPHP6萌新踩坑指南

一、开启调试模式

ThinkPHP6调试模式的开启要比ThinkPHP5.0多几个步骤:
1.打开 app/config/app.php 修改第 31 行代码

// 显示错误信息
'show_error_msg'   => true,

修改完成后的调试模式是这样的

还是跟我们想要的调试模式不一样

2.打开根目录下的 .example.env 文件
将第一行代码改成

APP_DEBUG = true

并将 .example.env 文件重命名为 .env

经过以上修改,调试模式的样子如下图:

终于是我们想要的了!

还有一个 .env 文件的大坑,就是

二、连接数据库时报错

我们已经在 datebase.php 配置完数据库了

但是连接数据库的时候还是会报错!
错误码如下:

SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)

解决方法。。。
在我们第一条里面修改完成的 .env 文件内再配置一遍,就可以了…

真是无语了…

三、view视图的渲染

用过 tp5.0 的大佬肯定都知道:在 tp5.0 中,我们通过继承 Controller 类,在控制器的自定义方法中就可以使用

<?php
namespace app\index\controller;

use think\Controller;

class Index extends Controller
{
    public function index()
    {
        return $this->fetch('index/index');
    }
}

这种方式来渲染视图文件,然而在 tp6 中,我们这样写就会报错,就是我上面用来展示调试模式开启成功截图中的错误。
那么这个问题要怎么解决呢?
1.首先我们要使用 composertopthink 提供的模板引擎类拉取下来
打开命令行窗口,将目录切换到项目根目录下,输入:

composer require topthink/think-view

等待拉取完毕即可进行下一步

2. use 刚才拉取的 View
这里分两种思路讲:
①(推荐)打开 app/BaseController.php
在原有代码基础上, use 的地方新增一条

use think\facade\View;

再新增一个自定义方法

    /**
     * 在Controller中用$this->fecth()解析和获取视图模板内容
     * @Author    风影OvO
     * @DateTime  2021-12-20
     * @copyright [www.fyovo.com]
     * @license   [BY-NC-SA/3.0/CN]
     * @version   [1.0]
     * @param     string            $template [description]
     * @return    [type]                      [description]
     */
    protected function fetch($template = ''){
        return View::fetch($template);
    }

这样我们就可以像用 tp5.0 一样在我们创建的控制器中继承 BaseController

<?php
namespace app\controller;

use app\BaseController;

class Index extends BaseController
{
    public function index(){
        return $this->fetch('index/index');
    }
}

$this 的形式渲染视图了。
这样写的好处就是无论你再新建多少个控制器,只要继承 BaseController 即可
就不需要在每个控制器中都 use think\facade\View 了,而且还比较装逼,显得你代码很OOP。

②第二种思路就是刚才说的,在每个控制器中都要写一遍 use think\facade\View
然后这样渲染视图

<?php
namespace app\controller;

use app\BaseController;
use think\facade\View;

class Index extends BaseController
{
    public function index(){
        return View::fetch('index/index');
    }
}

不太推荐这种思路,别问为什么,问就是懒。

四、视图输出字符串内容替换

tp5.0 中这个功能可以在 config.php 中的第 146 行找到并使用

    // 视图输出字符串内容替换
    'view_replace_str'       => [
        '__STATIC__' => '/static'
    ],

但是在 tp6 中,需要我们打开 app/config/view.php 文件,手动添加
贴上这个文件内的完整代码:

<?php
// +----------------------------------------------------------------------
// | 模板设置
// +----------------------------------------------------------------------

return [
    // 模板引擎类型使用Think
    'type'          => 'Think',
    // 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 3 保持操作方法
    'auto_rule'     => 1,
    // 模板目录名
    'view_dir_name' => 'view',
    // 模板后缀
    'view_suffix'   => 'html',
    // 模板文件名分隔符
    'view_depr'     => DIRECTORY_SEPARATOR,
    // 模板引擎普通标签开始标记
    'tpl_begin'     => '{',
    // 模板引擎普通标签结束标记
    'tpl_end'       => '}',
    // 标签库标签开始标记
    'taglib_begin'  => '{',
    // 标签库标签结束标记
    'taglib_end'    => '}',
    // 视图输出字符串内容替换
    'tpl_replace_string'  =>  [
        '__STATIC__'=>'/static',
    ],
];

这样才能实现 视图输出字符串内容替换 功能。

先讲这么多,后面想起什么再补充。
-End-

风影OvO

风影OvO, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA 4.0协议进行授权 | 转载请注明原文链接

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐