asinfotrack / yii2-toolbox
Yii2-Toolbox 是一组有用的助手、小部件等,扩展了 Yii2 的基本功能
Requires
- php: >=7.1.0
- yiisoft/yii2: ~2.0.6
- yiisoft/yii2-bootstrap: ~2.0.0
- yiisoft/yii2-gii: ~2.0.0
- yurkinx/yii2-image: ~1.1
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() 之间。属性 heading、body 和 footer 支持通过字符串或通过返回字符串的闭包设置。示例用法
<?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模板也修复了常见问题,并针对模型进行了优化。