[TOC] ## 1、安装`think-annotation`注解扩展以后报控制器不存在 报` \\app\\admin\\controller\\Index.php does not exist`确定了控制器无误的情况下仍然报控制器不存在: 将`vendor\topthink\think-annotation\src\InteractsWithRoute.php`文件大致39行的`$dirs`变量做以下修改: ``` $dirs = [DIRECTORY_SEPARATOR . $this->app->getNamespace() . $this->app->config->get('route.controller_layer')] + $this->app->config->get('annotation.route.controllers', []); ``` ## 2、swoole模式下安装了`think-captcha`验证码扩展启动服务以后,第一次刷新报控制器不存在,第二次刷新以后正常 修改文件`vendor\topthink\think-captcha\src\CaptchaService.php` ``` // 删除Route $route依赖注入参数 public function boot() { // swoole模式下有坑 路由定义需要干掉 //Route::get('captcha/[:config]', "\\think\\captcha\\CaptchaController@index"); Validate::maker(function ($validate) { $validate->extend('captcha', function ($value) { return captcha_check($value); }, ':attribute错误!'); }); } ``` 需要使用验证码的应用,需要在当前应用下的路由文件添加上验证码的路由: ``` // 自行use think\facade\Route; Route::get('/captcha/[:config]', "\\think\\captcha\\CaptchaController@index"); ``` `config\app.php` 需要加上配置(wooadmin系统默认已经加上): ``` 'app_express' => true, ``` 我反正就是这样解决了,又更好方法请告知! 3、woo命名空间失效 composer dumpautoload ## 3、后台(中台)的验证码不输或乱输为什么都可以登录? ![](images/screenshot_1675087725660.png) 最早是会验证的,后来有使用者说每次都输入验证码麻烦就修改成了debug模式下不验证验证码了。你项目开发完,把debug模式关闭了就会进行验证了,所以不要慌,看上图代码你就懂了,其实也是为了你着想。 ## 4、为什么数据权限设置了无效? 1、确定表中有admin_id字段 2、是不是有自行composer update?需要修改源码 https://www.kancloud.cn/laowu199/e_dev/1957961 ## 5、排序不起作用了? 为了效率,系统列表查询默认是没有使用order by的;因此改变了`list_order`会感觉没有排序效果。 如果你希望你的列表有排序,需要在模型管理中找到对应模型,为该模型设置下默认的排序方式。 ![](images/screenshot_1675267193225.png) ## 6、确定模型关联都设置正确了,列表还是不显示关联模型对应的名称? 1、确定你是否真的理解hasOne,hasMany,belongsTo等关联意义? [https://www.kancloud.cn/laowu199/e_dev/448632](https://www.kancloud.cn/laowu199/e_dev/448632) 2、确定你模型关联是否设置正确? ![](images/screenshot_1675267581446.png) 3、可以借鉴系统已有模型,比如Admin、User等,去依葫芦画瓢。 4、刚开始使用系统,模型不建议设置二级目录名。 5、100%确定设置正确的情况下,还是不显示呢?这个情况确实遇见过了,最后发现和tp模型属性名有重名了,比如Data。因此,你可以随便修改下模型关联键名和设置关联字段名再试试。 ## 7、后台"应用中心"403被拒绝访问 方式一、如果是宝塔环境,估计是伪静态配置造成的原因,找到站点对应的伪静态配置文件,把"|application"删除或修改为"|app"这样application就可以访问了。 ![](images/screenshot_1679900428148.png) 方式二、V2.3.1以后给application控制器单独定义了路由,因此可以手动修改url的方式来实现访问 路由: ~~~ // 防止宝塔伪静态禁用 Route::get('/app_center/:action', "Application/:action"); ~~~ 访问: 比如:/run/Application/index.html可以通过把Application修改为"app_center"如:/run/app_center/index.html来进行访问 ## 8、cms中扩展模型如文章、相册等字段上传配置无效的解决办法 ![](images/screenshot_1680253601505.png) 无效的原因是后台的操作其实都是cms.Document中进行操作,导致上传底层不能正确获取到对应的扩展模型,解决办法就是给上传字段明确当前对应的上传模型通过给标签加一个`data-model`来明确。你的实际模型是什么就写什么,上图只是以相册为例。 ## 9、所有layui模板语法中带#生效? ``` // 这样写模板输出值中有带 # ,layui的问题会导致不解析,应该修改为后面的写法 <div style="color:{{d.xxx ? '#f00':'#0f0'}}">xxxx</div> <div {{# color=d.xxx ? '#f00':'#0f0'}} style="color:{{color}}"></div> ``` ## 10、老版本的模型导出(2.3.4左右),然后新版本系统无法导入,提示"数据获取失败"? 由于导出时的TOKEN采用了RSA加密;由于新版本的加密做了优化,导致老版本的加密在新版本不能解密,从而报“数据获取失败”的提示。 将老版本的`woo\common\helper\Str`文件替换到最新(主要是`setEncrypt`和`setDecrypt`方法),然后老版本重新导出,新版再重新导入试试。 ## 11、同一台服务器部署多个项目并都使用的redis缓存引擎,导致数据串台,如何解决? 同一台服务器部署多个项目并都使用的redis缓存引擎(file引擎不影响),是因为使用了相同的缓存key导致多个项目有写入或读取同一个缓存数据导致了多个项目数据共享。可在`cache`配置文件中修改配置解决: ~~~ 'redis' => [ // 驱动方式 'type' => 'Redis', // 服务器地址 'host' => '127.0.0.1', // 指定缓存到那个数据库中 0 -16 'select' => 0, // 缓存前缀 'prefix' => '', // 缓存tag前缀 'tag_prefix' => 'tag:', ], ~~~ 让不同项目的prefix\tag_prefix不同即可。