博客

  • 微赞微擎常用其他函数 媒体文件路径格式化|日期范围|城市地址|Excel导入

    • 格式化图片路径:tomedia($src, $local_path = false)

    函数路径:framework\function\global.func.php

    PHP中引用

    $picurl = tomedia($coupon[“respthumb”]);

    模板页面引用

    <td style='width:80px;'>
            <img src='" . tomedia($item[$options[‘thumb’]]) . "' style='width:70px;border:1px solid #ccc;padding:1px'>
    </td>

    eweishopV3 格式化媒体路径函数:set_medias($list = array(), $fields = null)

    函数路径:addons\ewei_shopv2\core\inc\functions.php

    PHP中引用

    $list = set_medias($list, "thumb");

    $coupons = set_medias(pdo_fetchall($sql, $param), "thumb");

    $packages = set_medias($packages, array("thumb"));

    $ds = set_medias($ds, array('thumb', 'advimg'));

    • 日期范围:tpl_form_field_daterange($name, $value = array(), $time = false)

    模板页面引用 

    <div class="form-group">
           <label class="col-xs-12 col-sm-3 col-md-2 control-label">日期范围</label>
           <div class="col-sm-6 col-xs-12 col-lg-8 col-xs-12">
                {php echo tpl_form_field_daterange('time', array('starttime'=>date('Y-m-d', $starttime),'endtime'=>date('Y-m-d', $endtime)));}
           </div>
           <div class="pull-right col-xs-12 col-sm-3 col-lg-2">
                <button class="btn btn-default"><i class="fa fa-search"></i> 搜索</button>
           </div>
    </div>

    • 城市地址:tpl_form_field_district($name, $values = array())

     模板页面引用 

    <div class="form-group">
       <label class="col-sm-2 control-label">收货地址</label>
     <div class="col-sm-9 col-xs-12">
                {php echo tpl_form_field_district("addaddress");}
          </div>
    </div>

    <div class="form-group">
           <label class="col-sm-2 control-label">收货地址</label>
           <div class="col-sm-9 col-xs-12">
                {php echo tpl_form_field_district("addaddress", array('province' => $_GPC[‘record’][‘province’], ‘city’ => $_GPC[‘record’][‘city’], ‘district’ => $_GPC[‘record’][‘district’]));}
           </div>
    </div>

    •  获取input name的值
    var buynumber = $('input[name^='buynumber']').map(function(){return this.value}).get();
    
    $('input[name='nw']').val();
    •  循环覆盖

     foreach($list as $key => &$value){

    $bnumber= pdo_fetchcolumn('SELECT COUNT(*) FROM '.tablename('bc_party_payment').' WHERE status = 1 AND partyid = '.$value['id'] );

    $value['bbnumber']=$bnumber; 

    }

    •  人人弹窗

     示例1:

    t.confirm('确认要支付吗?', function () {
    
    })

    示例2:

    tip.confirm('确认要支付吗?', function () {
    
    })
    •  excel导入模板

    <form action='{php echo $this->createWebUrl('excel', array());}' method='post' class='form-horizontal' role='form' enctype='multipart/form-data' onsubmit='return formcheck()'>
        <div class='form-group'>
           <label class='col-xs-2 control-label'>文件</label>
           <div class='col-xs-4 '>
               <input type='file' class='form-control' name='file' value='' />
           </div>
       <div class='col-xs-2'>
           <button class='btn btn-default'><i class='fa fa-search'></i> 导入</button>
       </div>
       <div class='col-xs-4'>
           <a class='btn btn-primary' href='{$_W[‘attachurl’]}phone.xls'>下载导入模板</a>
       </div>
      </div>
    </form>

    隐藏上传文件

    PHP:::::

    $url = $this->createWebUrl('eggManage',array());
      $file = $_FILES['file'];
      if(!$file['size']){
       message('文件上传不能为空!',  '', 'error');
      }
      if( $file['name'] && $file['error'] == 0){
       $type = @end( explode('.', $file['name']));
       $type = strtolower($type);
       if( !in_array($type, array('xls','xlsx')) ){
        message('文件类型错误!',  '', 'error');
       }
       set_time_limit(0);
       include_once IA_ROOT . '/framework/library/phpexcel/PHPExcel.php';
       include_once IA_ROOT . '/framework/library/phpexcel/PHPExcel/IOFactory.php';
       if( $type == 'xls' ){
        $inputFileType = 'Excel5';    //这个是读 xls的
       }else{
        $inputFileType = 'Excel2007';//这个是计xlsx的
       }
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    $objPHPExcel = $objReader->load($file['tmp_name']);
    $sheet = $objPHPExcel->getSheet(0);
     //获取行数与列数,注意列数需要转换
    $highestRow = $sheet->getHighestRow();
    $highestColumn = $sheet->getHighestColumn();
    $highestColumnNum = PHPExcel_Cell::columnIndexFromString($highestColumn);
    $usefullColumnNum = $highestColumnNum;
    for ($row = 2;$row <= $highestRow;$row++){
    $tel = $sheet->getCellByColumnAndRow(0, $row)->getValue();//身份证
        $data = array(
    'tel' => $tel,
    );
    pdo_insert('mon_egg_success',$data);
       }
       message('导入成功', $url,'success');
      }else{
       message('导入失败', '','error');
      }
  • 微赞微擎常用媒体上传函数 单图|多图|音频|视频

    函数库路径:web\common\tpl.func.php

    eweishopV3插件函数库:addons\ewei_shopv2\core\inc\functions.php

    • 音频上传:tpl_form_field_audio($name, $value = '', $options = array())

    模板页面引用

    <div class="form-group">
              <label class="col-xs-12 col-sm-3 col-md-2 control-label">音乐引用URL</label>
              <div class="col-sm-9">
              {php echo tpl_form_field_audio('music', $item[‘music’],$this->geturl(4))}
                              <span class="help-block">为空默认音乐</span>
              </div>
    </div>

    • 视频上传:tpl_form_field_video($name, $value = '', $options = array())  OR  tpl_form_field_video2($name, $value = '', $options = array())

    模板页面引用 

    <div class="form-group">
            <label class="col-sm-2 control-label">首图视频</label>
            <div class="col-sm-9 col-xs-12">
                {php echo tpl_form_field_video2('video', $item[‘video’], array('disabled'=>!cv('goods.edit'), 'network'=>true, 'placeholder'=>'请选择视频'))}
                <div class='form-control-static'>设置后商品详情首图默认显示视频,目前仅支持小程序</div>
            </div>
    </div>

    • 多图上传:tpl_form_field_multi_image($name, $value = array(), $options = array())  OR   tpl_form_field_multi_image2($name, $value = array(), $options = array())

     模板页面引用 

    示例1:

    <div class="form-group">
            <label class="col-sm-2 control-label">首评回复</label>
            <div class="col-sm-9 col-xs-12">
                <textarea class="form-control" name="reply_content" rows="3">{$item[‘reply_content’]}</textarea>
            </div>
        </div>

        <div class="form-group">
            <label class="col-sm-2 control-label"></label>
            <div class="col-sm-9 col-xs-12">
                {php echo tpl_form_field_multi_image2('reply_images',iunserializer($item[‘reply_images’]))}
            </div>
    </div>

    示例2:

    <div class="form-group">
                <label class="col-xs-12 col-sm-2 col-md-2 col-lg-1 control-label">前台幻灯片</label>
                <div class="col-sm-10 col-xs-12">
                    {php echo tpl_form_field_multi_image('slides', $settings[‘slides’], '', array('global' => true, 'thumb' => 0));}
                    <span class="help-block">设置首页幻灯片。</span>
                </div>
    </div>

    •  单图上传:tpl_form_field_image2($name, $value = '', $default = '', $options = array())  OR  tpl_form_field_image($name, $value = '', $default = '', $options = array())

    模板页面引用 

    示例1:

    <div class="form-group">
                    <label class="col-sm-2 control-label">封面图片</label>
                    <div class="col-sm-9 col-xs-12">
                        {ifp 'abonus.cover.edit'}
                             {php echo tpl_form_field_image2('cover[thumb]’,$cover[‘thumb’])}
                        {else}
                            <div class="form-control-static">
                                <img src="{php echo tomedia($cover[‘thumb’])}" onerror="this.src='./resource/images/nopic.jpg'; this.title='图片未找到.'" class="img-responsive img-thumbnail" width="150">
                            </div>
                        {/if}
                    </div>
                </div>

    示例2:

    <div class="form-group">
        <label class="col-sm-2 control-label">收银台背景图</label>
        <div class="col-sm-9 col-xs-12">
            {php echo tpl_form_field_image('bg',$item[‘bg’],’../addons/ewei_shopv2/plugin/cashier/static/images/bg.jpg’,array(‘dest_dir’=>’cashier/’.$_W[‘cashierid’]))}
            <span class="help-block">如果为空,则使用系统默认</span>
        </div>
    </div> 

  • HBuilder8.8.0中vue.js代码提示功能介绍

    如何引入

    框架语法提示引入方式有两种:

    1. 如果项目中存在vue.xxx.js文件或者html中script标签引用了vue,则会自动挂载vue语法提示。
    2. 如果(1)中的条件不满足,则需要手动挂载(在项目上点右键选择【引入框架语法提示】,在框架列表中勾选上vue)

    功能介绍

    • vue基本API的提示

    • 构造vue实例时的配置项参数提示

    • vue指令提示

    • vue自定义组件标签在html中的提示

    • el以及template属性内智能提示

  • HBuilder X对vue的支持有多强?

    HBuilderX中使用vue,如果是打开vue文件,会自动挂载vue语法库。
    如果是HTML文件里引用vue框架,需要点右下角的语法提示库,选择vue语法库。
    我们更推荐开发者使用vue单文件规范,直接打开vue文件。

    1.语法高亮

    除了vue的普通语法高亮支持,HBuilderX还支持各种表达式语法,以及script和style支持的其他语言如less、scss、stylus、typescript等高亮,无需安装插件。

    2.代码提示

    • API提示及帮助
      提示不止是要全,而且要准。不能把所有词都猜一遍列出来,什么对象下有什么属性要精准呈现。
      既要写的快,又要写不错。
      除了完善的提示,在代码助手右侧还能看到清晰的帮助描述,对api进行说明,还有vue官网的api链接,点击即可直达vue官网指定页面。非常适合学习参考。

       

    • this的精准识别

     

     

    • 模板语法提示

     

     

     

     

    • 指令提示

     

     

    • 自定义组件提示

     

     

    • vue doc
      HBuilderX支持强大的vue doc,是vue组件开发者的利器,通过类jsdoc的写法,可让你的组件实现全面的代码提示和帮助。详见https://ask.dcloud.net.cn/article/35814

       

    • 兼容vscode vetur插件中的vue规范
      一些vue的组件库,已经按照vetur规范制作语法提示库,比如Element UI、Onsen UI、Bootstrap Vue等框架。
      这些框架npm安装或在HBuilderX新建模板中选择安装,可以直接实现代码提示。如下图

     

     

    • 常用代码块/自定义代码块
      敲v,在拉出的代码助手列表里可以看到大量vue代码块。
      你也可以在工具-代码块设置-vue代码块里自己添加更多代码块。

       

    • 其他

    另外其他开发工具常见的emmet、d.ts,HBuilderX也均良好支持。

    3.帮助文档

    光标放到api处,按下F1,可直接在右侧打开对应的帮助文档,不用切屏,边看文档边改代码,见下图:

     

     

    4.转到定义

    按下alt+鼠标单击,即可对各种变量、样式、方法的引用溯源,在template、script、style中来回跳转。非常强大而灵活。
    按下ctrl+alt+单击,还可在旁边以分栏方式打开定义处,方便并排查看。

     

    5.重构或选择相同语法词

    如果你想看某个变量在哪里被引用,或者选中所有变量进行改名,那么点右键->选择相同变量(ctrl+shift+e)。
    如下图可见,“list”在文中出现很多相同单词,但只有那几个准确的变量被选中:


    详情参考:https://ask.dcloud.net.cn/article/35732

     

    6.语法校验

    首先需要在插件管理中安装eslint-plugin-vue,然后点工具-验证本文档语法,或在vue文档保存时也会自动验证。
    插件的管理设置如配置快捷键、是否在保存时自动触发,在工具-外部命令-eslint-plugin-vue里的插件配置里,详见http://ask.dcloud.net.cn/article/19599
    如果要修改eslint的校验规则,在工具-外部命令-eslint-plugin-vue里的.eslintrc.js。
    当然如果工程下存在eslint校验配置,会优先执行工程下的配置。

     

    7. 大纲

    选择视图菜单-显示文档结构图,或右键菜单里选择,即可在左侧出现大纲。点击左侧即可快读跳转右侧。

     

    8. 免命令行使用vue

    如果你不喜欢配置复杂的node环境,这并不影响你快速进入vue世界。
    HBuilderX内置了终端插件和node环境。
    在新建界面,可以可视化新建vue项目,而不需要配cli。

     

     

    在运行菜单里,可以可视化的运行和build。

     

     

    在引入插件时也无需安装node模块,uni-app插件市场可以可视化的导入插件(仅适用于uni-app)

  • 盘点Photoshop中最实用的快捷键大全

    PS快捷键用得好,可以节省我们很多时间,收集整理了一些常用且值得收藏的快捷键。

    Adobe Photoshop 快捷键

    选择功能

    编辑类

    文件操作

    图层混合

    滤镜等功能

    工具类

  • PHP is_string() 函数

    is_string() 函数用于检测变量是否是字符串。

    PHP 版本要求: PHP 4, PHP 5, PHP 7

    语法

    bool is_string ( mixed $var )

    参数说明:

    • $var:要检测的变量。

    返回值

    如果指定变量为字符串,则返回 TRUE,否则返回 FALSE。

    实例

    把字符串打散为数组:

    <?php
    if (is_string("2663"))
        echo '这是一个字符串。' . PHP_EOL;
    else
        echo '这不是一个字符串。';
    var_dump(is_string('XYZ'));
    var_dump(is_string("99"));
    var_dump(is_string(123.05));
    var_dump(is_string(false));
    ?>
    

    输出结果为:

    这是一个字符串。
    bool(true)
    bool(true)
    bool(false)
    bool(false)
    
  • 浏览器快捷键大全

    浏览器快捷键大全,各位可评论补充完善

    窗口和标签页快捷方式

    Ctrl+N 打开新窗口
    按住 Ctrl‎ 键,然后点击链接 在新标签页中打开链接
    按住 Shift 键,然后点击链接 在新窗口中打开链接
    Alt+F4 关闭当前窗口
    Ctrl+T 打开新标签页
    Ctrl+Shift+T 重新打开上次关闭的标签页。 谷歌浏览器可记住您关闭的最后 10 个标签页。
    将链接拖动到标签页内 在指定标签页中打开链接
    将链接拖动到两个标签页之间 在新标签页横条上的指定位置打开链接
    Ctrl+1 到 Ctrl+8 切换到指定位置编号的标签页。 您按下的数字代表标签页横条上的位置。
    Ctrl+9 切换到最后一个标签页
    Ctrl+Tab 切换到下一个标签页
    Ctrl+Shift+Tab 切换到上一个标签页
    Ctrl+W 或 Ctrl+F4 关闭当前标签页或弹出式窗口

    地址栏快捷方式

    在地址栏,进行下列操作之一:

    键入搜索字词 使用默认搜索引擎进行搜索
    键入网址中”www.”和 “.com”之间的部分,然后按 Ctrl+Enter 为您在地址栏中输入的内容添加”www.”和”.com”,然后打开网址
    键入搜索引擎关键字或网址,按Tab 键,然后键入搜索字词 使用与关键字或网址相关联的搜索引擎进行搜索 如果谷歌浏览器可以识别您要使用的搜索引擎,将会提示您按 Tab 键。
    F6 或 Ctrl+L 突出显示网址区域中的内容
    输入网址,然后按 Alt+Enter 在新标签页中打开网址

    打开谷歌浏览器功能的快捷方式

    Ctrl+B 打开和关闭书签栏
    Ctrl+H 查看历史记录页
    Ctrl+J 查看下载页
    Shift+Escape 查看任务管理器
    Shift+Alt+T 将键盘焦点设置在谷歌浏览器工具栏上。 使用键盘上的向右和向左箭头,导航至工具栏的不同区域。

    网页快捷方式

    Ctrl+P 打印当前页
    F5 重新加载当前页
    Ctrl+F5 或 Shift+F5 重新加载当前页,但忽略缓存内容
    按住 Alt 键,然后点击链接 下载链接
    Ctrl+F 打开”在网页上查找”框
    Ctrl+G 或 F3 查找与您在”在网页上查找”框中输入的内容相匹配的下一个匹配项
    Ctrl+Shift+G 或 Shift+F3 查找与您在”在网页上查找”框中输入的内容相匹配的上一个匹配项
    Ctrl+U 查看源代码
    将链接拖动到书签栏 将链接加入书签
    Ctrl+D 将当前网页加入书签
    Ctrl++ 放大文字
    Ctrl+- 缩小文字
    Ctrl+0 还原到正常文字大小

    文字快捷方式

    突出显示内容,然后按 Ctrl+C 将内容复制到剪贴板
    将光标置于文字字段中,然后按 Ctrl+V 从剪贴板粘贴当前内容
    将光标置于文字字段中,然后按 Ctrl+Shift+V 从剪贴板粘贴当前内容的纯文字部分
    突出显示文字字段的内容,然后按 Ctrl+X 删除内容
    本文转载来源  浏览迷 ,转载请注明出处,感谢您的尊重!
  • PHP 使用 Redis

    安装

    开始在 PHP 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 PHP redis 驱动,且你的机器上能正常使用 PHP。 接下来让我们安装 PHP redis 驱动:下载地址为:https://github.com/phpredis/phpredis/releases

    PHP安装redis扩展

    以下操作需要在下载的 phpredis 目录中完成:

    $ wget https://github.com/phpredis/phpredis/archive/3.1.4.tar.gz
    $ cd phpredis-3.1.4                      # 进入 phpredis 目录
    $ /usr/local/php/bin/phpize              # php安装后的路径
    $ ./configure --with-php-config=/usr/local/php/bin/php-config
    $ make && make install

    修改php.ini文件

    vi /usr/local/php/lib/php.ini

    增加如下内容:

    extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20090626"
    
    extension=redis.so

    安装完成后重启php-fpm 或 apache。查看phpinfo信息,就能看到redis扩展。

    PHP 使用 Redis


    连接到 redis 服务

    <?php
        //连接本地的 Redis 服务
       $redis = new Redis();
       $redis->connect('127.0.0.1', 6379);
       echo "Connection to server successfully";
             //查看服务是否运行
       echo "Server is running: " . $redis->ping();
    ?>

    执行脚本,输出结果为:

    Connection to server sucessfully
    Server is running: PONG

    Redis PHP String(字符串) 实例

    <?php
       //连接本地的 Redis 服务
       $redis = new Redis();
       $redis->connect('127.0.0.1', 6379);
       echo "Connection to server successfully";
       //设置 redis 字符串数据
       $redis->set("tutorial-name", "Redis tutorial");
       // 获取存储的数据并输出
       echo "Stored string in redis:: " . $redis->get("tutorial-name");
    ?>
    

    执行脚本,输出结果为:

    Connection to server sucessfully
    Stored string in redis:: Redis tutorial

    Redis PHP List(列表) 实例

    <?php
       //连接本地的 Redis 服务
       $redis = new Redis();
       $redis->connect('127.0.0.1', 6379);
       echo "Connection to server successfully";
       //存储数据到列表中
       $redis->lpush("tutorial-list", "Redis");
       $redis->lpush("tutorial-list", "Mongodb");
       $redis->lpush("tutorial-list", "Mysql");
       // 获取存储的数据并输出
       $arList = $redis->lrange("tutorial-list", 0 ,5);
       echo "Stored string in redis";
       print_r($arList);
    ?>
    

    执行脚本,输出结果为:

    Connection to server sucessfully
    Stored string in redis
    Mysql
    Mongodb
    Redis

    Redis PHP Keys 实例

    <?php
       //连接本地的 Redis 服务
       $redis = new Redis();
       $redis->connect('127.0.0.1', 6379);
       echo "Connection to server successfully";
       // 获取数据并输出
       $arList = $redis->keys("*");
       echo "Stored keys in redis:: ";
       print_r($arList);
    ?>

    执行脚本,输出结果为:

    Connection to server sucessfully
    Stored string in redis::
    tutorial-name
    tutorial-list
  • Linux 下安装 Redis

    下载地址:http://redis.io/download,下载最新稳定版本。

    本教程使用的最新文档版本为 2.8.17,下载并安装:

    $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
    $ tar xzf redis-2.8.17.tar.gz
    $ cd redis-2.8.17
    $ make

    make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:

    下面启动redis服务.

    $ cd src
    $ ./redis-server

    注意这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。

    $ cd src
    $ ./redis-server ../redis.conf

    redis.conf 是一个默认的配置文件。我们可以根据需要使用自己的配置文件。

    启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。 比如:

    $ cd src
    $ ./redis-cli
    redis> set foo bar
    OK
    redis> get foo
    "bar"
    本文原创发布Redis 安装 | 菜鸟教程 ,转载请注明出处,感谢您的尊重!
  • 人人商城开启秒杀功能 错误信息: 未配置 redis, 请检查 data/config.php 中参数设置

    亲测解决

    1、安装redis组件,这里注意总共只能安装一个redis组件。如果安装错了PHP版本,那只能在软件管理里卸载了重装,在你需要的php版本下安装redis组件。

    2、上面操作正确的话,修改人人商城两个地方

    修改微擎配置文件

    (1)修改 /data/config.php  查找如下代码

    $config[‘setting’][‘cache’] = 'mysql';

    改成:

    $config[‘setting’][‘cache’] = 'redis';

    (2)在最下面添加代码

    // ————————–  添加以下代码  ————————— //

    $config[‘setting’][‘redis’][‘server’] = '127.0.0.1';//如果redis服务器在别的机器,请填写机器的IP地址。

    $config[‘setting’][‘redis’][‘port’] = 6379;

    $config[‘setting’][‘redis’][‘pconnect’] = 0;

    $config[‘setting’][‘redis’][‘timeout’] = 1;

    $config[‘setting’][‘redis’][‘requirepass’] = '';

    完整添加以上代码。

    刷新人人商城,你会看到整点秒杀功能正常了。