yii2 常用功能1

目录

sprintf() 函数把格式化的字符串写入变量中。

php 日期格式化

php 在线调试打印日志      

  and  和 or 运算

a 标签下载文件

  生成随机数

根据 对象导出Excel

yii2 下拉框组件

YIi2   禁售和停止

php使用file_get_contents 也可以外部访问接口

yii2 密码加密

距离的sql查询

yii2批量删除和批量修改

  • sprintf() 函数把格式化的字符串写入变量中。


  • php 日期格式化

        例如:date("Y-m.d",strtotime(8018-09-25 15:00))        输出2018-09.25

        例如:date("Y-m-d",strtotime(8018-09-25 15:00))        输出2018-09-25


  • php 在线调试打印日志      

        要写入文件的文件名(可以是任意文件名),如果文件不存在,将会创建一个

         $file  = 'log.txt';
         $content = "有消息来了";

         file_put_contents($file, $content,FILE_APPEND);// 这个函数支持版本(PHP 5) 


  •   and  和 or 运算

         $isDelete and $post['Dishes']['is_del'] = 1;        可以理解为if 运算   

          defined('YII_ENV') or define('YII_ENV', 'test');         or运算

          用 or 可以达到,是因为当函数错误后,能执行or后面的函数,这是因为下面三点原因:
          1.逻辑运算的运算顺序是从左向右
          2.or运算符的左结合性
          3.or运算中,如果运算时有值为真了,则整个表达式为真,后面不需要运算

          终合上面三个因素,当or左侧函数运行正常(返回非假值),则不会执行后面的函数
          这里利用了or的这个特性,将die(终止并输出函数)用于此处,巧妙的实现了函数异常而报错的功能
          检查一个常量是否定义过,如果没有定义那么就定义一个常量。


  • a 标签下载文件

      <a  target='_blank' href="/demo/downLoadTest.txt" download="">文件下载测试</a>
       download的值表示下载下来的文件名,如果不填,就会使用默认的文件名。


  •   生成随机数

  public  function randomNum($length=10)
    {
        $str = '';
        for($i = 0; $i < $length; $i++) {
            $str .= mt_rand(0, 9);
        }
        return $str;
    }


  • 根据 对象导出Excel


        $searchModel = new CouponUserSearch();
        $params=Yii::$app->request->queryParams;

        $params['keyword_l'] = isset($params['keyword_l'])?$params['keyword_l']:'';
        $params['key'] = isset($params['key'])?$params['key']:'';
        $params['date_start'] = isset($params['date_start'])?$params['date_start']:'';
        $params['date_end'] = isset($params['date_end'])?$params['date_end']:'';

        $dataProvider = $searchModel->search($params);
        $list=$dataProvider->getModels();        //将 dataProvider 转化成对象类型
        foreach ($list as $key=>$val){
            $val->seller_id =(empty($val->sellerPass->seller_name))?'-':$val->sellerPass->seller_name;
        }
        


  • yii2 下拉框组件

      <?=$form->field($model, 'mobile')->dropDownList(\yii\helpers\ArrayHelper::map($agency,'id', 'username'),         ['prompt'=>'Select...']);?>


  • YIi2   禁售和停止

                [
                    'format' => 'raw',
                    'attribute' => 'is_allow',
                    'label'=>'状态',
                    'value'=>function($filterModel){

                        switch ($filterModel->is_allow){
                            case 9:
                                return '<span class="label">违规</span> | <button type="button" class="btn  btn-success btn-xs allow" data-id="'.$filterModel->id.'">上架</button>';
                                break;
                            case 1:
                                return '<span class="label">已下架</span>';
                                break;
                            case 0:
                                return '<span class="label label-success">已上架</span> | <button type="button"  class="btn btn-default btn-xs stop" data-id="'.$filterModel->id.'">违规</button>';
                                break;
                        }

                    },
                ],



        $(document).on("click",'.allow',function () {
            var id=$(this).attr('data-id');
            var upbut=this;

            $.post("<?php echo Url::toRoute(['dishes/allow']);?>",{id:id},function (res) {
                if (res.code==1){
                    var html='<span class="label label-success">已上架</span> | <button type="button" class="btn btn-default btn-xs allow" data-id="'+id+'">违规</button>'
                    $(upbut).parent().html(html);
                }else{
                    alert(res.mg);
                }
            },'json');

        });

        $(document).on("click",'.stop',function () {
            var id=$(this).attr('data-id');
            var dnbut=this;

            $.post("<?php echo Url::toRoute(['dishes/stop']);?>",{id:id},function (res) {

                if (res.code==1){
                    var html='<span class="label">违规</span> | <button type="button" class="btn  btn-success btn-xs stop" data-id="'+id+'">上架</button>'
                    $(dnbut).parent().html(html);
                }else{
                    alert(res.mg);
                }
            },'json');

        });


    /**
     *  菜品的上架
     */
    public  function  actionAllow(){
        $json=array('code'=>0,'mg'=>'参数错误');
        if (yii::$app->request->isPost){
            $post=yii::$app->request->post();
            $model=Dishes::findOne(['id'=>$post['id']]);
            if (!empty($model)){
                $model->is_allow=0;
                if ($model->save()){
                    $json=array('code'=>1,'mg'=>'上架成功');
                }else{
                    $json=array('code'=>0,'mg'=>'上架失败');
                }
            }else{
                $json=array('code'=>0,'mg'=>'参数错误');
            }
        }

        echo json_encode($json);yii::$app->end();
    }
  • php使用file_get_contents 也可以外部访问接口

         $url="https://restapi.amap.com/v3/geocode/regeo? key=76b6d24aaca4f53cc8833da94ead0c78&location=116.481488,39.990464&extensions=all";
        $content=file_get_contents($url);
        $json=json_decode($content,true);
        var_dump($json);   

-------------------------------两者的区别------------------------------------------------------------

curl 支持更多协议,有http、https、ftp、gopher、telnet、dict、file、ldap;模拟 Cookie 登录,爬取网页;FTP 上传下载。

fopen / file_get_contents 只能使用 GET 方式获取数据。


  • yii2 密码加密

    $password_hash=Yii::$app->security->generatePasswordHash($model->password)        //生加密 

      $password是明文.如:123456,$password_hash是用上面方法生面的password hash,返回true与false
      
      Yii::$app->security->validatePassword($password, $password_hash);


  • 距离的sql查询

  $query = Sendcardlog::find()->where(['!=', 'memberId', $post['member_id']]);

    $query->select(['*','ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN(('.$post['latitude'].' * PI() / 180 - latitude * PI() / 180) / 2 ),2) + COS('.$post['latitude'].' * PI() / 180) * COS(latitude * PI() / 180) * POW(SIN(('.$post['longitude'].' * PI() / 180 - longitude * PI() / 180) / 2),2))) * 1000) AS juli']);

$query->andFilterWhere(['between','createTime',$startTime,$endTime]);
 $cards = $query->orderBy('juli ASC')->all();


  • yii2批量删除和批量修改

 $ids = explode(',',$ids);


 DishesComment::deleteAll(['in','id',$ids]);

DishesComment::updateAll(['is_del'=>1],['in','id',$ids]);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值