asinfotrack/yii2-toolbox

Yii2-Toolbox 是一组有用的助手、小部件等,扩展了 Yii2 的基本功能

安装次数: 28,441

依赖者: 6

建议者: 0

安全性: 0

星标: 11

关注者: 7

分支: 7

公开问题: 4

类型:yii2-extension

1.0.6 2021-01-06 15:45 UTC

README

Yii2-Toolbox 是一组有用的助手、小部件等,扩展了 Yii2 的基本功能

安装

安装此扩展的首选方式是通过 composer

"asinfotrack/yii2-toolbox": "~1.0.1"

变更日志

了解最新的改进.

内容

组件

MemoryUrlManager

此 URL 管理器实现了对 URL 的内存功能。这可以实现例如在请求之间保持 GridView 的状态(排序、过滤和分页)。默认配置将此数据保存到会话变量中,并将参数附加到链接上。

使用非常简单。只需将此类设置为 Yii-config 中的 URL 管理器,并根据下面的示例和类内的文档指定额外的属性。

配置示例

// ...
'urlManager'=>[
	'class'=>'\asinfotrack\yii2\toolbox\components\MemoryUrlManager',
	
	'memoryMap'=>[

		//the controller
		'mycontroller'=>[
			//the action
			'myindexaction'=>[
				//regex rules...if a param matches a rule it will be memorized
				'/^SearchForm/',
				//if a rule is specified like this, the regex is only enabled if the callback returns true
				'page'=>function() {
					return rand(0,1) == 1;
				},
			],
		],

		//modules work the same, except they have one level more
		'mymodule'=>[
			'mymodulecontroller'=>[
				//the action
				'mymoduleaction'=>[
					//regex rules...if a param matches a rule it will be memorized
					'/^MyForm/',
				],
			],
		],

	],
],
// ...

memoryMap 中的每个条目都可以是一个字符串,表示匹配要保存的参数的正则表达式。您可以选择使用正则表达式规则作为键,并返回布尔值的回调作为值。在这种情况下,只有当回调返回 true 时,规则才生效。

ImageResponseFormatter

图像响应格式化器。您需要按照以下方式将格式化器添加到配置中

'response' => [
	// ...
	'formatters'=>[
		'img_jpg'=>[
			'class'=>'asinfotrack\yii2\toolbox\components\ImageResponseFormatter',
			'extension'=>'jpg',
		],
		'img_png'=>[
			'class'=>'asinfotrack\yii2\toolbox\components\ImageResponseFormatter',
			'extension'=>'png',
		],
		'img_gif'=>[
			'class'=>'asinfotrack\yii2\toolbox\components\ImageResponseFormatter',
			'extension'=>'gif',
		],
	],
	// ...
],

之后,您就可以使用它通过操作轻松输出图像。

public function actionAvatar()
{	
	Yii::$app->response->format = 'img_png';
	return file_get_contents($pathToMyImage);
}
PdfResponseFormatter

用于处理 PDF 请求的附加响应格式化器。您需要按照以下方式将格式化器添加到配置中

'response' => [
	// ...
	'formatters'=>[
		'pdf'=>'asinfotrack\yii2\toolbox\components\PdfResponseFormatter',
		'pdf_download'=>[
			'class'=>'asinfotrack\yii2\toolbox\components\PdfResponseFormatter', 
			'forceDownload'=>true,
		],
	],
	// ...
],

之后,您就可以使用它通过操作轻松输出 PDF。

public function actionPdf()
{
	//create pdf with some library (eg FPDF)
	$pdf = new FPDF();
	// ...

	$response = Yii::$app->response;
	$response->data = $pdf->Output();
	$response->format = 'pdf';
}
User

通过 ability to check multiple rights at once (canAll, canAny, canOne) 扩展 \yii\web\User

ProgressiveImageGd 和 ProgressiveImageImagick

这两个类扩展了 yurkinx/yii2-image 的图像驱动程序,以实现 jpg 文件的渐进式编码。要使用它,只需调用工厂类 asinfotrack\yii2\toolbox\helpers\ImageFactory::createInstance($path, $driver=self::DRIVER_GD) 获取实例,然后继续工作。请确保已启用 GD 或 Imagick 库。

小部件

Button

按钮小部件扩展了 yii2 提供的小部件。它添加了指定图标的功能。图标依赖于 font-awesome,因此需要 yii2 扩展 rmrevin/yii2-fontawesome

AjaxToggleButton

一个用于切换布尔值(1,0)的 Ajax 按钮。与 AjaxAttributeAction 一起使用,这使得切换布尔标志变得非常容易。小部件属性 booleanAttribute 仅用于读取值。因此,您必须在控制器操作中重新指定此属性(如下面的步骤 2 所示)。

AjaxAttributeAction 一起使用示例

<?= AjaxToggleButton::widget([
	'model'=>$model,
	'booleanAttribute'=>'is_archived',
	'action'=>'toggle-archived',
	'options'=>['class'=>'btn-primary btn-xs'],
]);

现在将 AjaxAttributeAction 的一个实例附加到指定的模型的相应控制器中

public function actions()
{
	return [
		'toggle-archived'=>[
			'class'=>AjaxAttributeAction::className(),
			'targetClass'=>User::className(),
			'targetAttribute'=>'is_archived',
		],
	];
}
FlashMessages

此小部件自动渲染闪存消息。消息可以自动从 yiis 的会话组件中检索,或者通过自定义的可调用函数提供。

简单使用示例,渲染 yiis 的会话闪存,每个都在自己的 alert-container 中

<?= FlashMessages::widget() ?>

使用自定义回调提供闪存的复杂使用

<?= FlashMessages::widget([
    'loadFlashesCallback'=>function() {
        return ['info'=>'Hello', 'danger'=>'World!'];
    },
]) ?>
Panel

渲染 Bootstrap-Panel。您可以通过属性设置其主体,或者在 begin()end() 之间。属性 headingbodyfooter 支持通过字符串或通过返回字符串的闭包设置。示例用法

<?php Panel::begin([
	'heading'=>Html::tag('h3', 'Welcome!'),
	'footer'=>function() {
		return Yii::$app->formatter->asDatetime(time());
	},
]); ?>
 	
 	<p>Hello world! This is a simple panel with a heading.</p>
 	 	
<?php Penel::end(); ?>
SimpleNav

简单的导航小部件,它具有与常规 nav 小部件(\yii\bootstrap\Nav)相同的功能,但渲染一个简单的 HTML 列表,然后可以使用 CSS 进一步样式化。没有下拉菜单...只是干净的代码!

StatsBoxes

渲染包含标题、图标和值的变量数量的统计框。这非常适合模型的详细视图。

TabsWithMemory

通过javascript sessionStorage 记忆其活动标签的标签小部件。

视频

简化视频标签工作的包装小部件。

网格列类型

提供的列类型扩展了基本 \yii\grid\DataColumn 的功能。该类是 AdvancedDataColumn。它具有对齐文本、设置具有绝对值或百分比值的列等功能。

此外,还有三种其他列类型

  • AdvancedActionColumn 进一步扩展了动作列的功能(按钮的权限等)
  • AdvancedDataColumn 是具有高级功能的常规数据显示的基类
  • BooleanColumn 优化用于渲染布尔值
  • IdColumn 优化用于渲染带有或不带有代码标签的id值
  • LinkColumn 渲染链接(可以使用闭包生成)

辅助工具

ColorHelper

使处理HEX或RGB颜色变得简单!它可以在两种格式之间转换,使颜色变亮或变暗,以及创建两种颜色之间的步骤。您还可以使用它来获取颜色的亮度或验证颜色值。自动支持简写HEX格式。

ComponentConfig

用于处理组件配置的辅助类

DropdownHelper

使处理下拉列表变得更简单。特别是如果您需要每个项目的附加选项

Geocoding

用于处理google geocoding api的辅助类。它使您能够执行单次调用正向和反向地理编码

Html

扩展了Yii2的Html辅助工具,增加了额外的功能,如伪装电子邮件地址、Bootstrap元素、文本突出显示等。

ImageFactory

用于创建图像驱动程序实例的工厂类。要使用它,只需调用 createInstance($path, $driver=self::DRIVER_GD) 来获取实例并继续工作。请确保GD或Imagick库已启用。

MigrationHelper

用于处理迁移的常见任务的辅助工具(例如,检查是否已应用迁移等)。

PrimaryKey

\yii\db\ActiveRecord 的PK一起工作的功能以及将它们转换为JSON。

QueryHelper

与ActiveQuery一起工作时的常规任务。

ServerConfig

提供获取最重要的服务器变量以及检查是否已加载特定扩展的功能。

Timestamp

此辅助工具负责与UNIX时间戳相关的常见任务。它还具有将日期解析为时间戳的功能(提取自yii日期验证器的功能)。

Url

此辅助工具扩展了Yii2-Url辅助工具的基本功能。它提供了获取有关当前请求的URL信息的功能,例如TLD、子域等。

行为

ArchiveBehavior / ArchiveQueryBehavior

使模型能够存档或不行。这类似于软删除,但不是删除记录而是存档。该行为是完全可配置的,还有针对相应查询类的行为。

StateBehavior / StateQueryBehavior

文档即将推出!

动作

AjaxAttributeAction

一个通用的非常方便的动作,可以通过ajax调用修改模型值。请参阅类注释了解如何配置此动作。

AjaxToggleButton 的描述中还有进一步的例子。

DebugAction

调试动作显示有关托管当前配置的相关信息。它还在浏览器中显示所有类型的配置。

要启用它,只需将其添加到您选择的控制器的 actions() 方法中并提供一个视图来渲染其内容即可。

public function actions()
{
    return [
        // ...
        [
            'class'=>'asinfotrack\yii2\toolbox\actions\DebugAction',
            'view'=>'//site/debugging',
        ]
        // ...
    ];
}

在此视图中,您只需使用此语句输出内容

<?= $content ?>

验证器

SelectiveRequiredValidator

验证器要求从列表中选择一定数量的字段为必填。要使用验证器,只需指定属性选择并设置其中需要多少个为必填

public function rules()
{
    return [
        // ...
        [['phonePrivate','phoneWork','mobile'], SelectiveRequiredValidator::className(), 'errorAttribute'=>'phonePrivate'],
        // ...
    ];
}

控制台

ConsoleTarget

输出到控制台的自定义日志目标

迁移

具有简化创建迁移时重复任务功能的功能。

异常

ExpiredHttpException

抛出代码410,将链接标记为已过期。如果例如会议结束或记录已归档,这很有帮助。

Gii-Generators

提供的Gii-Generators修复了默认代码模板中的通用格式问题(例如,使用空格而不是制表符等)。

安装

要启用提供的生成器,您需要更新gii配置,如下所示

'modules'=>[
	// ...
	'gii'=>[
		'class'=>'yii\gii\Module',
		'generators'=>[
			'model'=>[
				'class'=>'asinfotrack\yii2\toolbox\gii\model\Generator',
				'templates'=>[
					'asiToolboxModel'=>'@vendor/asinfotrack/yii2-toolbox/gii/model/default',
				],
			],
			'crud'=>[
				'class'=>'asinfotrack\yii2\toolbox\gii\crud\Generator',
				'templates'=>[
					'asiToolboxCrud'=>'@vendor/asinfotrack/yii2-toolbox/gii/crud/default',				
				],
			],
		],
	],
	// ...
],
模型

默认情况下添加了Timestamp-和BlameableBehaviour。此外,每个模型都有一个可选的font-awesome图标名称,可以分配给每个模型。这可以通过Model::iconName()检索。此外,还生成了一个默认的查询类。

CRUDs

CRUD模板也修复了常见问题,并针对模型进行了优化。