文档章节

yii2短信消息队列

botkenni
 botkenni
发布于 2017/04/11 10:58
字数 526
阅读 154
收藏 0

1、在backend\config\params-local.php中加入

<?php
return [
    'order_file_sms_id'  => '121313',
    'order_file_sms_preview'  => '您的文件请及时下载,签字后邮寄到:{1},收件人:{2},电话:{3}',
    'send_invoice_sms_id' => '323232',//模板id
    'send_invoice_sms_preview' => '[掘金企服】尊敬的客户您好,您的发票已寄出,快递公司:{1},快递单号:{2},预计到达时间:{3},请注意查收!如需帮助,请拨打400-900-6969.',//模板内容
];

2、在backend\views\invoice-list\list.php中引入

<!--已寄送start-->
<div class="modal fade" id="send-invoice-modal" tabindex="-1" role="dialog" aria-labelledby="modal-title">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <?php
            $sendInvoiceForm = new \backend\models\SendInvoiceForm();
            $form = \yii\bootstrap\ActiveForm::begin([
                'action' => ['invoice-action/send'],
                'id' => 'send-invoice-form',
                'validationUrl' => ['invoice-action/send', 'is_validate' => 1],
                'enableAjaxValidation' => true,
                'layout' => 'horizontal',
                'fieldConfig' => [
                    'horizontalCssClasses' => [
                        'label' => 'col-sm-3',
                        'offset' => 'col-sm-offset-3',
                        'wrapper' => 'col-sm-8',
                    ],
                ],
            ]);
            ?>
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
                            aria-hidden="true">&times;</span></button>
                <h4 class="modal-title">已寄送</h4>
            </div>
            <div class="modal-body">
                <?= $form->field($sendInvoiceForm, 'express')->textInput() ?>
                <?= $form->field($sendInvoiceForm, 'express_no')->textInput() ?>
                <?= $form->field($sendInvoiceForm, 'send_time')->widget(DateTimePicker::className(), [
                    'clientOptions' => [
                        'format' => 'yyyy-mm-dd',//显示的时间格式,年-月-日
                        'language' => 'zh-CN',
                        'autoclose' => true,
                        'minView' => 'month',//设置时间插件的显示格式,根据不同的参数显示,这里month只显示天

                    ],
                    'clientEvents' => [],
                ]) ?>
                //引入短信队列 id:send_invoice_sms_id,内容:send_invoice_sms_preview
                <?php if(isset(Yii::$app->params['send_invoice_sms_id']) && isset(Yii::$app->params['send_invoice_sms_preview'])): ?>
                    <h4>将给客户发送以下信息:</h4>
                    <p id="sms-preview">
                        <?= str_replace(['{1}','{2}','{3}'], [$sendInvoiceForm->express, $sendInvoiceForm->express_no,
                            $sendInvoiceForm->send_time], Yii::$app->params['send_invoice_sms_preview'])?>
                    </p>
                <?php endif; ?>
            </div>
            <div class="modal-footer">
                <?= Html::activeHiddenInput($sendInvoiceForm, 'id', ['id' => 'send-invoice-form_id']); ?>
                <span class="text-danger warning-active"></span>
                <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
                <button type="submit" class="btn btn-primary refund-sure-btn">确定</button>
            </div>
            <?php \yii\bootstrap\ActiveForm::end(); ?>
            <?php
            //上面输入框输入内容替换短信部分,其中"\n", "\r", "\n\r"], 用''替换,
            $smsPreview = str_replace(["\n", "\r", "\n\r"], '', Yii::$app->params['send_invoice_sms_preview']);
            $this->registerJs(<<<JS
            //3个输入框,只要改动任何一个就替换掉内容
            $('#express, #express_no, #send_time').change(function(){
                replaceSmsPreview();
            });
            //替换部分
            function replaceSmsPreview()
            {
                var smsPreview = '{$smsPreview}';//必须用单引号,而且写在外面,否则js不识别
                var express = $('#express').val();
                var express_no = $('#express_no').val();
                var send_time = $('#send_time').val();
                //替换
                smsPreview = smsPreview.replace('{1}', express).replace('{2}', express_no).replace('{3}', send_time);
                $('#sms-preview').text(smsPreview);
            }
            $('.send-invoice-btn').on('click', function(){
                var id = $(this).attr('data-id');
                $('#send-invoice-form_id').val(id);
            });
            $('#send-invoice-form').on('beforeSubmit', function(){
                var form = $(this);
                $.post(form.attr('action'), form.serialize(), function(rs){
                    if(rs.status === 200)
                    {
                        form.trigger('reset.yiiActiveForm');
                        window.location.reload();
                    }
                    else
                    {
                        form.find('.warning-active').text(rs.message);
                    }
                }, 'json');
                return false;
            });
JS
            )?>
        </div>
    </div>
</div>
<!--已寄送end-->

© 著作权归作者所有

下一篇: phpDoc注释
botkenni
粉丝 20
博文 429
码字总数 444521
作品 0
西城
程序员
私信 提问
swoole-jobs 4.0 发布,兼容 swoole 4

1.swoole-jobs简介 基于swoole类似gearman的分布式任务处理系统 高性能/动态多woker进程消费队列,加速后端耗时服 无需像gearman一个worker配置一条crontab,swoole-jobs负责管理所有worker状...

peigreet
08/11
2.1K
6
基于 swoole 的 job 调度组件 - swoole-jobs

swoole-jobs 基于swoole类似gearman的分布式任务处理系统 高性能/动态多woker进程消费队列,加速后端耗时服 无需像gearman一个worker配置一条crontab,swoole-jobs负责管理所有worker状态 独...

peigreet
2017/11/29
1K
0
redis的简单使用 异步发送邮件

你是否也困在redis,知其然不知其所以然~~ 项目中,到底怎么用?? 一个简单的实例,使用消息队列实现下yii异步发送邮件 redis~~准备工作: 首先得配置redis服务,之前写过相关的文章,可以参考...

萧逸
09/29
0
0
使用yii2-queue结合redis来实现队列功能

使用yii2-queue结合redis来实现队列功能 为什么用它? 其实之前用过activemq,但是这个东西基于Java的,得装一堆东西,还得配置,而且我只是比较简单的功能,所以就没打算上这个,不过后面了解...

栋栋也疯狂
04/02
175
0
Yii2 使用 Beanstalk 队列

安装 安装服务端 根据官方的教程安装,一条命令搞定。 安装 Yii2 客户端扩展 在你 Yii2 项目中执行 安装管理 Beanstalk 队列的 Web 系统 此项目是一个单独的系统,可以查看和管理队列任务 使...

小田天
2016/11/18
122
0

没有更多内容

加载失败,请刷新页面

加载更多

web前端开发高级

前端高效开发框架技术与应用 Vue 基础 Vue 框架简介 MVX 模式介绍 Vue 框架概述 如何使用 Vue.js 基础语法 实例对象 生命周期 模板语法 计算属性 Methods 方法 渲染 列表渲染 条件渲染 事件与...

达达前端小酒馆
38分钟前
5
0
PostgreSQL 11.3 locking

rudi
今天
5
0
Mybatis Plus sql注入器

一、继承AbstractMethod /** * @author beth * @data 2019-10-23 20:39 */public class DeleteAllMethod extends AbstractMethod { @Override public MappedStatement injectMap......

一个yuanbeth
今天
21
1
一次写shell脚本的经历记录——特殊字符惹的祸

本文首发于微信公众号“我的小碗汤”,扫码文末二维码即可关注,欢迎一起交流! redis在容器化的过程中,涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值,statefulset管理的pod需要...

码农实战
今天
5
0
为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

之前在阅读《阿里巴巴Java开发手册》时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符串拼接的效率...

武培轩
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部