TLingC's Zone
TLingC's Zone

php
文章归档

ThinkPHP 6 模型搜索扩展包

think-searchable ThinkPHP 6.0 模型搜索扩展包 安装 composer require tlingc/think-searchable 使用 模型配置 在需要搜索功能的模型中引入SearchableTrait: <?php namespace app\model; use think\Model; use tlingc\think\searchable\SearchableTrait; class UserModel extends Model { use SearchableTrait; // 可搜索字段(定义搜索器后必须在此添加) protected $searchable = [ 'name', 'role_id' ]; // 使用thinkph…

168   2021-10-04  

easywechat小程序支付

$this->pay = Factory::payment(Config::get('pay')); $pay_params = [ 'out_trade_no' => $order->out_trade_no, 'total_fee' => $order->pay_amount*100, 'body' => $order->name, 'trade_type' => 'JSAPI', 'openid' => $user->openid ]; $res = $this->pay->order->unify($pay_params); if ($res['return_code'] != 'SUCCESS') { throw new DisplayException("[{$res['return_code']}] {$res['return_msg']}"…

160   2021-08-02  

php实现aes-128-ecb SHA1PRNG 加解密

在PHP中实现Java下使用SecureRandom SHA1PRNG算法进行AES-128-ECB(AES/ECB/PKCS5Padding)加解密的效果: function encrypt($data, $password) { $key = substr(openssl_digest(openssl_digest($password, 'sha1', true), 'sha1', true), 0, 16); $result = openssl_encrypt($data, 'AES-128-ECB', $key); return $result; } function decrypt($data, $password) { $key = substr(openssl_digest(openssl_digest($password, 'sha1', true), 'sha1', true), 0, 16)…

237   2021-06-18  

fastadmin根据筛选条件导出数据

使用fastadmin做后台管理系统,自带的前端导出有时候不能满足需求,需要后端生成导出文件,需要获取到用户前台的筛选条件。将以下代码放在对应js文件的控制器事件函数中: $('#btn-export').click(function() { var options = table.bootstrapTable('getOptions'); var search = options.queryParams({}); var filter = search.filter; var op = search.op; window.open('?export=1&filter=' + filter + '&op=' + op); }) 示例: index: function ()…

654   2021-03-22  

Laravel分页输出增加末尾斜杠

近期在做一个多语言网站,使用二级目录的形式来表示不同的语言,链接示例如下: https://test.com/zh-hans/ https://test.com/zh-hant/ 页面中需要使用分页,同时也需要传递查询参数。然而在页面中使用分页方法后,输出的页码对应链接变成了: https://test.com/zh-hans?page=2 这样一来所有未带斜杠的请求都要经过一次301跳转,变成了两次请求,影响加载速度。通过查看源码,发现Laravel会对path进行处理,去除前后的斜杠,因此需要在分页输出的代码中增加: ->se…

453   2021-01-12  

ThinkPHP 6 阿里云日志服务日志驱动

think-aliyunsls ThinkPHP 6 阿里云日志服务日志驱动 安装 composer require tlingc/think-aliyunsls 配置 config/log.php // 默认日志记录通道 'default' => 'aliyunsls', // 日志通道列表 'channels' => [ 'aliyunsls' => [ // 日志记录方式 'type' => 'Aliyunsls', // 阿里云 endpoint 'endpoint' => 'http://cn-beijing.sls.aliyuncs.com/', // 阿里云 AccessKey ID 'access_key_id' …

1,974   2020-03-16  

腾讯云 ThinkPHP Serverless Component

由 官方维护的ThinkPHP Component 已发布,可使用官方版。 由于官方对静态资源处理采用扩展名枚举实现,暂无法满足我的业务需求,故本仓库还会维护一段时间。如果官方版已经能够满足你的需求,建议使用官方版。 简介 腾讯云 ThinkPHP Serverless Component。 本项目基于 tencent-laravel 修改,以支持运行 ThinkPHP,同时优化了对静态资源的兼容性。 目录 准备 安装 配置 部署 移除 0. 准备 初始化 ThinkPHP 项目 在使用此组件之前,你需要先自己初始化一个 thinkphp …

1,017   2020-03-08  

让ThinkPHP 6.0语言包支持多级分组

最近在做一个多语言网站项目,需要给一个多级导航栏编写语言包。虽然ThinkPHP 6.0多语言功能引入了语言分组,但其分组最深只能支持两层,在如我的这种情况下无法满足需要。 可通过修改框架src/think/Lang.php来实现多层级的支持。 在src/think/Lang.php中,替换对应方法: public function has(string $name, string $range = ''): bool { $range = $range ?: $this->range; if ($this->config['allow_group'] && strpos($name, '.')) { $names = e…

1,065   2020-02-05  

ThinkPHP 6.0 多语言优化扩展包

think-lang ThinkPHP 6.0 多语言优化扩展包 特色 支持通过如 mywebsite.com/zh-hans/ 的二级目录访问对应语言页面。 支持每种语言的语言包单独成目录,目录下可设有二级目录。 安装 composer require tlingc/think-lang 使用 基础配置 请参照 官方文档 进行相关配置。同时注意如下与官方文档的不同点。 开启和加载语言包 中间件名称为: 'tlingc\lang\middleware\LoadLangPack', 由于多语言通过二级目录访问,使用Cookie保存语言 功能无效。 语言文件定义 自…

2,127   2020-02-04  
https://tlingc.com/wp-content/uploads/2019/12/TIM截图20191208174038_conew2.jpg

在Composer中使用自己修改的包

在使用composer组件时,有时候需要对包进行一些自定义修改,有一些教程中写需要修改composer.json,然后发布到Packagist,但如果只是适应自己需求所作的小修改,其实并没有必要发布到Packagist,而这样做也是Packagist不推荐的: Do not submit forks of existing packages. If you need to test changes to a package…

1,069   2019-12-08  

在ThinkPHP中使用Laravel Mix

参照Laravel Mix文档,可以用在独立项目中,因此可以在ThinkPHP根目录下,参照Laravel项目,建立如下两个文件: package.json { "private": true, "scripts": { "dev": "npm run development", "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", "watch": "npm run development -- --watch", "watch-poll": "…

1,357   2019-10-15  

Composer检查可以更新的包

如果要为本地已经安装的composer包检查更新,可以用这个命令: composer show -o 运行后,会列出可以更新的包名称,以及当前版本和最新版本。

500   2019-09-17  

PHP中把字符串true/false转成boolean布尔型

在PHP中,无法使用(bool)或者settype()函数把字符串的"true"和"false"转成布尔型。如果使用上述两种办法,会始终返回true。 <?php $string = 'true'; var_dump((bool) $string); $string = 'false'; var_dump((bool) $string); $string = 'true'; var_dump(settype($string, 'boolean')); $string = 'false'; var_dump(settype($string, 'boolean')); ?> 返回 bool(true) bool(true) bool(true) bool(true) 参考PHP官网文档,可自己定义一个函数解决: //参考:https…

2,872   2019-09-03  

ThinkPHP 6.0 实现二级目录多语言功能

建议使用下方文章中的扩展包,它对本文中实现的多语言功能中间件进行了封装,同时计划加入更多相关功能。 前言 ThinkPHP内置了多语言功能,但是它是通过判断URL参数、Cookies、HTTP_ACCEPT_LANGUAGE请求参数来返回语言包的,由于多种语言的URL固定的,在搜索引擎抓取页面时,页面返回哪种语言取决于爬虫所带的请求头,这种方法对SEO有一定的影响,难以全面收录各种语言的版本。例如Google webmaster support的“管理多区域和多语言网站”一文中提及到: Google 建议对每种语言…

2,320   2019-08-13  

利用PHP把MySQL数据库内所有表编码转换为utf8mb4

<?php $mysql = mysql_connect(MYSQL_HOST,MYSQL_USERNAME,MYSQL_PASSWORD); if (!$mysql) echo "Failed to connect mysql!"; mysql_select_db(MYSQL_DBNAME,$mysql); $result = mysql_query("SHOW TABLE STATUS"); while($row = mysql_fetch_row($result)) { mysql_query("ALTER TABLE " . $row[0] . " CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci"); } ?>

715   2018-02-22  
加载更多