Yii2邮件配置

在 common/config/main-local.php中写入以下代码配置 Mail代理

return [
        'components' => [
            ...//your code,
            //以下是 mail 的配置
            'mailer' => [
                'class' => 'yii\swiftmailer\Mailer',
                'viewPath' => '@common/mail',
                'transport' => [
                    'class' => 'Swift_SmtpTransport',
                    //我用的是QQ 的代理,所以这里是 QQ 的配置信息
                    'host' => 'smtp.qq.com',
                    'port' => 587,
                    'encryption' => 'tls',    
                    //这部分信息不应该公开,所以后期会由数据库中拿取
                    'username' => '你的 QQ 号',
                    'password' => '你的 QQ 密码',
                ],
                //发送的邮件信息配置
                'messageConfig' => [

                    'charset' => 'utf-8',

                    'from' => ['83398365@qq.com' => 'BugAsk']
                ],

            ],'

        ]

    ];

继续阅读Yii2邮件配置

Yii2使用主题功能实现多端匹配

首先在项目配置文件config/main.php中配置主题配置

'as theme' => [
      'class' => 'frontend\components\ThemeControl',
    ],

* 该配置项与components同级

然后在frontend\components目录下创建ThemeControl.php文件内容如下:

<?php
namespace frontend\components;

use Yii;
use yii\base\Object;
use yii\base\ActionFilter;
class ThemeControl extends ActionFilter{
    public function init()
    {
        if(Yii::$app->devicedetect->isMobile())
        {
            $theme = "mobile";
        }else{
            $theme = "pc";
        }
        Yii::$app->view->theme = Yii::createObject([
            'class' => 'yii\base\Theme',
            'pathMap' => [
                '@app/views' => [
                    "@app/views/{$theme}",
                ]
            ]
        ]);
    }
}

继续阅读Yii2使用主题功能实现多端匹配

Yii分页的使用

1、Controller中action

<?
use yii\data\Pagination;
....
public function actionList()
{
  $query = Article::find()->where(['status' => 1]);
  $countQuery = clone $query;
  $pages = new Pagination(['totalCount' => $countQuery->count()]);
  $models = $query->offset($pages->offset)
      ->limit($pages->limit)
      ->all();
  return $this->render('index', [
      'models' => $models,
      'pages' => $pages,
   ]);
}

默认分页的数量是20,你可以设置pageSize为你想要的

$pages = new Pagination([ 
    'totalCount' => $totalCount, 
    'pageSize' => 5, 
]);

继续阅读Yii分页的使用

Yii2数据库操作

1、常用查询

// WHERE admin_id >= 10 LIMIT 0,10
 User::find()->select('*')->where(['>=', 'admin_id', 10])->offset(0)->limit(10)->all()
// SELECT `id`, (SELECT COUNT(*) FROM `user`) AS `count` FROM `post`   
 $subQuery = (new Query())->select('COUNT(*)')->from('user');    
 $query = (new Query())->select(['id', 'count' => $subQuery])->from('post');
// SELECT DISTINCT `user_id` ... 
 User::find()->select('user_id')->distinct();

2、更新操作

//update();
//runValidation boolen 是否通过validate()校验字段 默认为true 
//attributeNames array 需要更新的字段 
$model->update($runValidation , $attributeNames);  

//updateAll();
//update customer set status = 1 where status = 2
Customer::updateAll(['status' => 1], 'status = 2'); 

//update customer set status = 1 where status = 2 and uid = 1;
Customer::updateAll(['status' => 1], ['status'=> '2','uid'=>'1']);

//updateAllCounters()在数据库值的基础上进行操作

Customer::updateAllCounters(['age' => 1]); //增加所有年龄字段加1


继续阅读Yii2数据库操作

Yii2数据库查询实例

1、findOne()和findAll():

// 查询key值为10的客户
$customer = Customer::findOne(10);
$customer = Customer::find()->where(['id' => 10])->one();
// 查询年龄为30,状态值为1的客户
$customer = Customer::findOne(['age' => 30, 'status' => 1]);
$customer = Customer::find()->where(['age' => 30, 'status' => 1])->one();
// 查询key值为10的所有客户
$customers = Customer::findAll(10);
$customers = Customer::find()->where(['id' => 10])->all();
// 查询key值为10,11,12的客户
$customers = Customer::findAll([10, 11, 12]);
$customers = Customer::find()->where(['id' => [10, 11, 12]])->all();
// 查询年龄为30,状态值为1的所有客户
$customers = Customer::findAll(['age' => 30, 'status' => 1]);
$customers = Customer::find()->where(['age' => 30, 'status' => 1])->all();

继续阅读Yii2数据库查询实例

Yii实用技巧

1、如何禁止加载Yii自带的jQuery、bootstarp、bootstarp插件

//禁止加载jquery.js
'assetManager' => [
    'bundles' => [
        'yii\web\JqueryAsset' => [
            'js'=>[]
        ],
    ],
],
//禁止加载bootstarp.js、bootstarp.css
'assetManager' => [
    'bundles' => [
        'yii\bootstrap\BootstrapPluginAsset' => [
            'js'=>[]
        ],
    ],
],
'assetManager' => [
    'bundles' => [
        'yii\bootstrap\BootstrapAsset' => [
            'css' => [],
        ],
    ],
],

添加在应用的配置文件中的components中。 继续阅读Yii实用技巧

Yii2小部件的创建与使用

在做项目的时候经常会遇到某一块内容会在视图中重复使用,在Yii2中为我们提供了小部件让我们可以轻松实现重用视图的使用与配置。

Yii2本身提供了很多比较优秀的小部件工具,比如yii\widgets\ActiveForm, [yii\widgets\Menu|menu]]以及bootstarp的一些小部件。而且我们还可以非常轻松的创建自定义小部件。 继续阅读Yii2小部件的创建与使用