marqu3s / yii2-behaviors
Yii2行为的集合
Requires
- yiisoft/yii2: ~2
README
安装
安装此扩展的首选方法是通过composer。运行以下命令之一:
php composer.phar require --prefer-dist marqu3s/yii2-behaviors "*"
或者添加
"marqu3s/yii2-behaviors": "*"
到您的composer.json文件的require部分。
可用行为
GRID
SaveGridPaginationBehavior
将网格的当前页和pageSize保存到PHP会话中,以便您可以在稍后自动恢复网格所在的页面。
用法:在将用于生成填充网格的数据Provider的模型上附加此行为。
public function behaviors() { return [ 'saveGridPage' => [ 'class' => SaveGridPaginationBehavior::class, 'sessionVarName' => self::class . 'GridPage', 'sessionPageSizeName' => self::class . 'GridPageSize' ] ]; }
然后,在您的search()方法中,使用以下之一设置网格当前页:
$dataProvider = new ActiveDataProvider( [ 'query' => $query, 'sort' => ..., 'pagination' => [ 'page' => $this->getGridPage(), // <- Prefered method 'pageSize' => $this->getGridPageSize(), ... ] ] );
或者
$dataProvider->pagination->page = $this->getGridPage();
SaveGridFiltersBehavior
在每次请求时将网格的当前过滤器保存到PHP会话中,并使用[[loadWithFilters()]]获取当前过滤器并将其分配给网格。
用法:在将用于生成填充网格的数据Provider的模型上附加此行为。
public function behaviors() { return [ 'saveGridFilters' => [ 'class' => SaveGridFiltersBehavior::class, 'sessionVarName' => self::class . 'GridFilters' ] ]; }
然后,在您的search()方法中,将$ this->load()替换为$dataProvider = $this->loadWithFilters($params, $dataProvider)
$dataProvider = new ActiveDataProvider( [ 'query' => $query, 'sort' => ..., 'pagination' => [ 'page' => $this->getGridPage(), // <- Prefered method 'pageSize' => $this->getGridPageSize(), ... ] ] ); //$this->load($params); // <-- Replace or comment this $dataProvider = $this->loadWithFilters($params, $dataProvider); // From SaveGridFiltersBehavior
SaveGridOrderBehavior
将网格的当前排序条件保存到PHP会话中。
用法:在将用于生成填充网格的数据Provider的模型上附加此行为。
public function behaviors() { return [ 'saveGridOrder' => [ 'class' => SaveGridOrderBehavior::class, 'sessionVarName' => self::class . 'GridOrder' ] ]; }
然后,在您的search()方法中,使用以下代码设置网格当前排序:
$dataProvider->sort->attributeOrders = $this->getGridOrder();
ActiveRecord
LogChangesBehavior
每次创建或更新模型时都会创建一个日志。日志条目包含所有更改的属性,以及它们的旧值和新值。
安装:使用log_active_record.sql脚本创建必要的表,或者将迁移脚本复制到您的迁移目录并执行yii migrate
。如果您想使用自己的表,使用自己的命名约定,可以自定义行为以使用自己的表名和列。
用法:将其添加到ActiveRecord模型的behaviors()方法中,并使用其属性进行自定义。
可选:您可以在ActiveRecord中实现LogChangesInterface,并创建一个自定义的getDeletedRecordText()
,当记录被删除时返回自定义日志消息。
public function behaviors() { return [ 'LogChanges' => [ 'class' => LogChangesBehavior::class, // Customization 'valuesReplacement' => [ 'active' => [ 0 => 'No', 1 => 'Yes', ] ], 'currencyAttributes' => [ 'subtotal', 'total', 'tax' ] ], ]; }
这就完成了!