Common.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. namespace app\common\behavior;
  3. use think\Config;
  4. use think\Lang;
  5. use think\Loader;
  6. use Carbon\Carbon;
  7. class Common
  8. {
  9. public function appInit()
  10. {
  11. $allowLangList = Config::get('allow_lang_list') ?? ['zh-cn', 'en'];
  12. Lang::setAllowLangList($allowLangList);
  13. }
  14. public function appDispatch(&$dispatch)
  15. {
  16. $pathinfoArr = explode('/', request()->pathinfo());
  17. if (!Config::get('url_domain_deploy') && $pathinfoArr && in_array($pathinfoArr[0], ['index', 'api'])) {
  18. //如果是以index或api开始的URL则关闭路由检测
  19. \think\App::route(false);
  20. }
  21. }
  22. public function moduleInit(&$request)
  23. {
  24. // 设置mbstring字符编码
  25. mb_internal_encoding("UTF-8");
  26. // 如果修改了index.php入口地址,则需要手动修改cdnurl的值
  27. $url = preg_replace("/\/(\w+)\.php$/i", '', $request->root());
  28. // 如果未设置__CDN__则自动匹配得出
  29. if (!Config::get('view_replace_str.__CDN__')) {
  30. Config::set('view_replace_str.__CDN__', $url);
  31. }
  32. // 如果未设置__PUBLIC__则自动匹配得出
  33. if (!Config::get('view_replace_str.__PUBLIC__')) {
  34. Config::set('view_replace_str.__PUBLIC__', $url . '/');
  35. }
  36. // 如果未设置__ROOT__则自动匹配得出
  37. if (!Config::get('view_replace_str.__ROOT__')) {
  38. Config::set('view_replace_str.__ROOT__', preg_replace("/\/public\/$/", '', $url . '/'));
  39. }
  40. // 如果未设置cdnurl则自动匹配得出
  41. if (!Config::get('site.cdnurl')) {
  42. Config::set('site.cdnurl', $url);
  43. }
  44. // 如果未设置cdnurl则自动匹配得出
  45. if (!Config::get('upload.cdnurl')) {
  46. Config::set('upload.cdnurl', $url);
  47. }
  48. if (Config::get('app_debug')) {
  49. // 如果是调试模式将version置为当前的时间戳可避免缓存
  50. Config::set('site.version', time());
  51. // 如果是开发模式那么将异常模板修改成官方的
  52. Config::set('exception_tmpl', THINK_PATH . 'tpl' . DS . 'think_exception.tpl');
  53. }
  54. // 如果是trace模式且Ajax的情况下关闭trace
  55. if (Config::get('app_trace') && $request->isAjax()) {
  56. Config::set('app_trace', false);
  57. }
  58. // 切换多语言
  59. if (Config::get('lang_switch_on')) {
  60. $lang = $request->get('lang');
  61. if (preg_match("/^([a-zA-Z\-_]{2,10})\$/i", $lang)) {
  62. \think\Cookie::set('think_var', $lang);
  63. }
  64. }
  65. // Form别名
  66. if (!class_exists('Form')) {
  67. class_alias('fast\\Form', 'Form');
  68. }
  69. }
  70. public function addonBegin(&$request)
  71. {
  72. // 加载插件语言包
  73. $lang = request()->langset();
  74. $lang = preg_match("/^([a-zA-Z\-_]{2,10})\$/i", $lang) ? $lang : 'zh-cn';
  75. Lang::load([
  76. APP_PATH . 'common' . DS . 'lang' . DS . $lang . DS . 'addon' . EXT,
  77. ]);
  78. $this->moduleInit($request);
  79. }
  80. }