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模板也修复了常见问题,并针对模型进行了优化。