PHP code example of moxuandi / yii2-helpers
1. Go to this page and download the library: Download moxuandi/yii2-helpers library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
moxuandi / yii2-helpers example snippets
// 判断当前服务器操作系统, eg: 'Linux'或'Windows':
echo Helper::getOs();
// 获取当前微妙数, eg: 1512001416.3352:
echo Helper::microTimeFloat();
// 格式化文件大小, eg: '1.46 MB'.
echo Helper::byteFormat(1532684);
// 获取图片的宽高等属性, eg: ['width' => 1366, 'height' => 768, 'type' => 'png', 'mime' => 'image/png', 'attr' => 'width="203" height="50"']:
echo Helper::getImageInfo('uploads/img.png');
// 获取文件的扩展名, eg: 'jpg':
echo Helper::getExtension('uploads/img.jpg');
// 获取指定格式的文件路径, eg: 'uploads/image/201707/1512001416.jpg':
echo Helper::getFullName('img.jpg', 'uploads/image/{yyyy}{mm}/{time}');
$config = [
'allowFiles' => ['.png', '.jpg', '.jpeg', '.gif', '.bmp'], // 上传图片格式显示
'pathFormat' => 'uploads/image/{yyyy}{mm}/{yy}{mm}{dd}_{hh}{ii}{ss}_{rand:4}', // 上传保存路径, 可以自定义保存路径和文件名格式
'modelClass' => 'common\model\Upload', // 文件信息是否保存入库
'process' => [ // 二维数组, 将按照子数组的顺序对图片进行处理
'match' => ['image', 'process'], // 图片处理后保存路径的替换规则, 必须是两个元素的数组
'thumb' => [ // 缩略图配置
'width' => 300, // 缩略图宽度
'height' => 200, // 缩略图高度
'mode' => 'outbound', // 生成缩略图的模式, 可用值: 'inset'(补白), 'outbound'(裁剪, 默认值)
],
'crop' => [ // 裁剪图配置
'width' => 300, // 裁剪图的宽度
'height' => 200, // 裁剪图的高度
'top' => 200, // 裁剪图顶部的偏移, y轴起点, 默认为`0`
'left' => 200, // 裁剪图左侧的偏移, x轴起点, 默认为`0`
],
'frame' => [ // 添加边框的配置
'margin' => 20, // 边框的宽度, 默认为`20`
'color' => '666', // 边框的颜色, 十六进制颜色编码, 可以不带`#`, 默认为`666`
'alpha' => 100, // 边框的透明度, 可能仅`png`图片生效, 默认为`100`
],
'watermark' => [ // 添加图片水印的配置
'watermarkImage' => '/uploads/watermark.png', // 水印图片的绝对路径
'top' => 100, // 水印图片的顶部距离原图顶部的偏移, y轴起点, 默认为`0`
'left' => 200, // 水印图片的左侧距离原图左侧的偏移, x轴起点, 默认为`0`
],
'text' => [ // 添加文字水印的配置
'text' => 'TONGMENGCMS', // 水印文字的内容
'fontFile' => '@yii/captcha/SpicyRice.ttf', // 字体文件, 可以是绝对路径或别名
'top' => 100, // 水印文字距离原图顶部的偏移, y轴起点, 默认为`0`
'left' => 200, // 水印文字距离原图左侧的偏移, x轴起点, 默认为`0`
'fontOptions' => [ // 字体属性
'size' => 12, // 字体的大小, 单位像素(`px`), 默认为`12`
'color' => 'fff', // 字体的颜色, 十六进制颜色编码, 可以不带`#`, 默认为`fff`
'angle' => 0, // 写入文本的角度, 默认为`0`
],
],
'resize' => [ // 调整图片大小的配置
'width' => 300, // 图片调整后的宽度
'height' => 200, // 图片调整后的高度
'keepAspectRatio' => true, // 是否保持图片纵横比, 默认为`true`
'allowUpscaling' => false, // 如果原图很小, 图片是否放大, 默认为`false`
],
],
];
$up = new Uploader('upfile', $config);
echo Json::encode([
'url' => $up->fullName,
'state' => Uploader::$stateMap[$up->status]
]);
'components' => [
'authClientCollection' => [
'class' => 'yii\authclient\Collection',
'clients' => [
'qq' => [
'class' => 'moxuandi\oauth\QQClient',
'clientId' => 'your APP ID',
'clientSecret' => 'your APP Key',
],
'github' => [
'class' => 'yii\authclient\clients\GitHub',
'clientId' => 'your Client ID',
'clientSecret' => 'your Client Secret',
],
]
],
],
class SiteController extends Controller
{
public function actions()
{
return [
'auth' => [
'class' => 'yii\authclient\AuthAction',
'successCallback' => [$this, 'onAuthSuccess'],
],
];
}
public function onAuthSuccess(BaseClient $client)
{
$attributes = $client->getUserAttributes();
// user login or signup comes here(处理登录)
}
}
$mg = new Migration();
$mg->createTable('auth', [
'id' => $mg->primaryKey(),
'user_id' => $mg->integer()->notNull(),
'source' => $mg->string()->notNull(), // 验证提供商: qq/weibo/wechat
'source_id' => $mg->string()->notNull(), // 唯一ID: openid
]);
$mg->addForeignKey('fk-auth-user_id-user-id', 'auth', 'user_id', 'user', 'id', 'CASCADE', 'CASCADE');
html
<?= \yii\authclient\widgets\AuthChoice::widget([
'baseAuthUrl' => ['/site/auth'],
'popupMode' => false, // 不使用弹出窗口
])