9月
25
商户操作:
- 安装操作证书 。 使用 mac chrome 安装完成控件后,发现 控件启动不了。这个时候可以这么操作。
- 浏览器输入 chrome://flags 回车
- 搜索 Native Client 将状态改成 enable
- 重启 chrome 即可。
- api 安全相关。
# 生成 32 位秘钥
# http://code.php.net.cn 在线编辑
// 创建随机字符串
function createNoncestr($length = 16)
{
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$str = "";
for($i = 0; $i < $length; $i ++)
{
$str .= substr ( $chars, mt_rand ( 0, strlen ( $chars ) - 1 ), 1 );
}
return $str;
}
$str = createNoncestr(32);
echo $str;
- api 证书
https://kf.qq.com/faq/180824JvUZ3i180824YvMNJj.html
- 点击更换证书,下载证书只做工具。
- 设置好路径,下一步生成即可。粘贴进网站上商户输入框。
- 再网站下一步,生成证书粘贴到工具中。下一步即可。然后打开之前设置的路径。就可以看到 zip文件了。
api 证书不影响支付,对提现等功能才有用。
9月
16
9月
12
这里的关键点:
1. redis 异步队列。
2. 多项目。
面对上边这种情况,怎么处理呢。如果不处理又会出现什么现象呢。
因为我们使用 supervisord 进行常驻队列侦听。如果不指定对应的 queue,多项目就会出现串的情况。这个是就可以用 queue 来处理该问题了。
处理
- 修改 supervisord 的配置文件。在 command 中指定一个 queue 。如
command=/alidata/service/php/bin/php /alidata/www/www.mlxiu.com/artisan queue:work redis --queue=test --sleep=3 --tries=3
- 在项目中,指定 queue。因为使用的是 laravel 框架。 队列继承 ShouldQueue。 可以在构造函数中指定 queue 即可。
public function __construct($id)
{
$queueName = config('queue.name');
if ($queueName) {
$this->onQueue($queueName);
}
}
queue.name 是自己额外在 queue.config 中添加的变量。
参考
https://www.cnblogs.com/zgxblog/p/10996112.html
9月
06
layer.open 弹出一个对象,有时候会遇到高度自适应的问题。该怎么处理呢。文档虽然说明了怎么做,也的确是高度随着对象的变化,高度也变化了。但是弹层并没有对位置自适应。也就是没居中。其实在对象变化后,手动调用一次 $(window).resize();
即可。
操作
- layer.open 的时候,
area
只设置一个宽度值,或设置成 auto
。
- 弹出对象变化的时候,调用一次
$(window).resize();
layer.open({
……,
area: '720px',
……
});
# 千万不要下边这种
layer.open({
……,
area: ['720px'],
……
});
# 虽然 area 设置成数组形式表示的是宽高。一个值时就是宽。但是只设置一个值时和上边的非数组形式不一样。也就是不会出现自适应。
layer.open({
……,
area: ['720px', '450px'],
……
});
就这么一点点了。
9月
02
net::ERR_INCOMPLETE_CHUNKED_ENCODING 500 错误,至少有一种可能是服务器磁盘满了。
8月
31
layui 有第三方比较好的三级联动,多级联动插件。但有时候,因为特殊要求,满足不了需要。这个时候就需要修改源码了。
先看插件文档以及实例。
https://fly.layui.com/extend/selectN,selectM/#doc
https://moretop.gitee.io/layui-select-ext/
特殊需要
1,需要回调。虽然不需要回调 form 提交一样可以拿到数据。可有时候前端就是需要有回调,需要看到具体的变化。这个时候就得改源码了。
2,删除对象时候,需要 confirm 确定后,才能删除。
修改
selectN 三级联动全只读。在初始化的时候,删除 select dom 即可。当然,也需要从 config 中添加配置,读配置。
//只读删除 select 组件,删除图标
if (c.allRead) {
$E.find('.layui-anim').remove();
$E.find('.layui-edge').remove();
$E.find('input').attr("readonly", true);
}
selectM 回调。在 config 中配置回调函数,并在初始化的时候指定好回调函数。在数据变化的时候,判断下是否有回调函数。存在就回调过去。
if (c.change && typeof c.change === "function" && typeof c.change.nodeType !== "number") {
c.change(values);
}
selectM 删除确定。同样在 config 中配置变量,默认不需要确定。初始化的时候配置好即可。当需要删除对象的时候,先看是否存在需要确认的变量。不需要则直接删除。需要则先弹出 confirm 框,看操作。
$E.on('click','a i',function(e){
this.delete = function() {
var _this = $(this).prev('span');
var v = _this.attr('lay-value');
if(v){
var _dd = $(c.elem).find('dd[lay-value='+v+']');
_dd.removeClass('layui-this');
_dd.find('.layui-form-checkbox').removeClass('layui-form-checked');
}
o.setSelected();
_this.parent().remove();
e.stopPropagation();
};
if (o && o.config && o.config.confirm) {
layer.confirm('您确定要删除该选项?', {btn:['确定']}, (index) =>{
this.delete();
layer.close(index);
});
return;
}
this.delete();
});
8月
28
虽然 Larave Auth 包含了验证邮箱以及密码的功能,但终归是固定样式的。想要更美观,更漂亮的验证功能,就得自定义。
自定义最直接的方法,就是重写发送逻辑。先贴出部分代码,然后读下边的文章,你肯定会做到的。
# App\Models\User;
//发送验证邮箱
// verification.verify 是你自定义的邮箱模板
public function sendEmailVerificationNotification()
{
\Illuminate\Auth\Notifications\VerifyEmail::toMailUsing(function ($notifiable) {
$url = \Illuminate\Support\Facades\URL::temporarySignedRoute(
'verification.verify', now()->addMinutes(60), ['id' => $notifiable->getKey()]);
$email = $this->email;
$nickname = $this->nickname;
$body = sprintf('<a href="%s" target="_blank">点击激活邮箱</a>', $url);
$mail = (new \Illuminate\Notifications\Messages\MailMessage)->view('emails.activateMail', ['nickname' => $nickname, 'url' => $url],
function (Message $message) use ($nickname, $email, $body) {
$message->subject('请激活你的邮箱');
$message->getSwiftMessage()->setBody($body);
$message->to($email, $nickname);
}
);
return $mail;
});
$this->notify(new \Illuminate\Auth\Notifications\VerifyEmail);
}
当然,你可以使用 trait 干净处理,还可以使用事件另外解耦,还可以添加队列进行异步处理。
参考文章
https://www.jianshu.com/p/38e1426edf58
https://laravelacademy.org/post/19497.html