yiier/yii2-helpers

Helpers for Yii2

Maintainers

👁 forecho

Package info

github.com/yiier/yii2-helpers

Type:yii2-extension

pkg:composer/yiier/yii2-helpers

Statistics

Installs: 7 189

Dependents: 2

Suggesters: 0

Stars: 11

Open Issues: 0

v2.1.1 2020-08-23 11:02 UTC

Requires

Requires (Dev)

None

Suggests

None

Provides

None

Conflicts

None

Replaces

None

BSD-4-Clause bc895e0eb63520ae7e2fb9a383a65307b505e20b

  • forecho <caizhenghai.woop@gmail.com>

helpersextensionyii2

This package is auto-updated.

Last update: 2026-06-23 23:45:55 UTC


README

Helpers for Yii2

👁 Latest Stable Version
👁 Total Downloads
👁 Latest Unstable Version
👁 License

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist yiier/yii2-helpers "*"

or add

"yiier/yii2-helpers": "*"

to the require section of your composer.json file.

Method Listing

arrayShift

ArrayHelper::arrayShift([0 => 'a', 2 => 'c', 1 => 'b']);
// [2 => 'c', 1 => 'b']

saveAll

$rows = [];
foreach ($items as $key => $value) {
 $rows[$key]['title'] = $value['title'];
 $rows[$key]['user_id'] = $userId;
}
if (!ModelHelper::saveAll(Post::tableName(), $rows)) {
 throw new Exception();
}

Global Functions

change composer.json file, add this:

"autoload": {
 "files": [
 "vendor/yiier/yii2-helpers/src/GlobalFunctions.php",
 "vendor/yiier/yii2-helpers/src/SupportFunctions.php"
 ]
},

then run

$ composer dump

SearchModel

示例一

$searchModel = new SearchModel([
 'model' => Topic::className(),
 'scenario' => 'default',
]);
$dataProvider = $searchModel->search(['SearchModel' => Yii::$app->request->queryParams]);
return $this->render('index', [
 'dataProvider' => $dataProvider,
]);

示例二

$searchModel = new SearchModel([
 'defaultOrder' => ['id' => SORT_DESC],
 'model' => Topic::className(),
 'scenario' => 'default',
 'relations' => ['comment' => []], // 关联表(可以是Model里面的关联)
 'partialMatchAttributes' => ['title'], // 模糊查询
 'pageSize' => 15
]);
$dataProvider = $searchModel->search(['SearchModel' => Yii::$app->request->queryParams]);
$dataProvider->query->andWhere([Topic::tableName() . '.user_id' => 23, Comment::tableName() . '.status' => 1]);
return $this->render('index', [
 'dataProvider' => $dataProvider,
]);

FileTarget

Can achieve results:@app/runtime/logs/error/20151223_app.log

change config file, main.php

'components' => [
 'log' => [
 'traceLevel' => YII_DEBUG ? 3 : 0,
 'targets' => [
 /**
 * 错误级别日志:当某些需要立马解决的致命问题发生的时候,调用此方法记录相关信息。
 * 使用方法:Yii::error()
 */
 [
 'class' => 'yiier\helpers\FileTarget',
 // 日志等级
 'levels' => ['error'],
 // 被收集记录的额外数据
 'logVars' => ['_GET', '_POST', '_FILES', '_COOKIE', '_SESSION', '_SERVER'],
 // 排除404错误
 'except' => ['yii\web\HttpException:404'],
 // 指定日志保存的文件名
 'logFile' => '@app/runtime/logs/error/app.log',
 // 是否开启日志 (@app/runtime/logs/error/20151223_app.log)
 'enableDatePrefix' => true,
 ],
 /**
 * 警告级别日志:当某些期望之外的事情发生的时候,使用该方法。
 * 使用方法:Yii::warning()
 */
 [
 'class' => 'yiier\helpers\FileTarget',
 // 日志等级
 'levels' => ['warning'],
 // 被收集记录的额外数据
 'logVars' => ['_GET', '_POST', '_FILES', '_COOKIE', '_SESSION', '_SERVER'],
 // 指定日志保存的文件名
 'logFile' => '@app/runtime/logs/warning/app.log',
 // 是否开启日志 (@app/runtime/logs/warning/20151223_app.log)
 'enableDatePrefix' => true,
 ],
 /**
 * info 级别日志:在某些位置记录一些比较有用的信息的时候使用。
 * 使用方法:Yii::info()
 */
 [
 'class' => 'yiier\helpers\FileTarget',
 'enabled' => false, // 表示关闭
 // 日志等级
 'levels' => ['info'],
 // 被收集记录的额外数据
 'logVars' => ['_GET', '_POST', '_FILES', '_COOKIE', '_SESSION', '_SERVER'],
 // 指定日志保存的文件名
 'logFile' => '@app/runtime/logs/info/app.log',
 // 是否开启日志 (@app/runtime/logs/info/20151223_app.log)
 'enableDatePrefix' => true,
 ],
 /**
 * trace 级别日志:记录关于某段代码运行的相关消息。主要是用于开发环境。
 * 使用方法:Yii::trace()
 */
 [
 'class' => 'yiier\helpers\FileTarget',
 'enabled' => false, // 表示关闭
 // 日志等级
 'levels' => ['trace'],
 // 被收集记录的额外数据
 'logVars' => ['_GET', '_POST', '_FILES', '_COOKIE', '_SESSION', '_SERVER'],
 // 指定日志保存的文件名
 'logFile' => '@app/runtime/logs/trace/app.log',
 // 是否开启日志 (@app/runtime/logs/trace/20151223_app.log)
 'enableDatePrefix' => true,
 ],
 [
 'class' => 'yiier\helpers\FileTarget',
 'enabled' => false, // 表示关闭
 'levels' => ['profile'],
 'logVars' => [],
 'maxFileSize' => 1024,
 'logFile' => '@app/runtime/logs/app/app.log',
 'enableDatePrefix' => true,
 ],
 ],
 ],
],

ResponseHandler

RESTful Response Handler, change config file main.php:

'components' => [
 'response' => [
 'class' => 'yii\web\Response',
 'on beforeSend' => function ($event) {
 yii::createObject([
 'class' => 'yiier\helpers\ResponseHandler',
 'event' => $event,
 ])->formatResponse();
 },
 ],
]

Migration

<?php

use yiier\helpers\Migration;

class m170810_084615_create_post extends Migration
{
 /**
 * @var string
 */
 public $tableName = '{{%post}}';

 public function up()
 {
 $this->createTable($this->tableName, [
 'id' => $this->primaryKey(),
 'name' => $this->string()->notNull(),
 ], $this->tableOptions);
 }

 public function down()
 {
 $this->dropTable($this->tableName);
 }
 
}

String Helper

yiier\helpers\StringHelper::after('@', 'biohazard@online.ge'); // 'online.ge'

yiier\helpers\StringHelper::afterLast('[', 'sin[90]*cos[180]');// '180]'

yiier\helpers\StringHelper::before('@', 'biohazard@online.ge'); // 'biohazard'

yiier\helpers\StringHelper::beforeLast('[', 'sin[90]*cos[180]'); // 'sin[90]*cos'

yiier\helpers\StringHelper::between('@', '.', 'biohazard@online.ge'); // 'online'

yiier\helpers\StringHelper::betweenLast('[', ']', 'sin[90]*cos[180]'); // '180'

Setup Helper

yiier\helpers\Setup::toFen(100); // 10000
yiier\helpers\Setup::toYuan(100); // 1

\yiier\helpers\Setup::errorMessage($model->firstErrors);

Date Helper

\yiier\helpers\DateHelper::convert('1454214981');
\yiier\helpers\DateHelper::convert('1454214981','date');
\yiier\helpers\DateHelper::convert('1454214981','time');

//……

Security

<?php
yiier\helpers\Security::random();
yiier\helpers\Security::generateSalt();
yiier\helpers\Security::generateRealUniqId();

requestId

change config.php , add code :

<?php 
// ...
return [
 'components' => [
 'requestId' => [
 'class' => \yiier\helpers\RequestId::class,
 'delimiter' => '-', // Optional
 'requestIdParamName' => 'X_REQUEST_ID', // Optional
 'requestIdHeaderName' => 'X-Request-ID', // Optional
 ],
 // ...
 ],
]

use

Yii::$app->requestId->id;

……