netis / yii2-fsm
为Yii PHP框架提供切换AR模型状态工具的扩展。
dev-master
2016-12-16 14:08 UTC
Requires
- netis/yii2-crud: *
- yiisoft/yii2: >=2.0.4
This package is not auto-updated.
Last update: 2024-09-14 19:03:55 UTC
README
为Yii PHP框架提供切换模型状态的工具的扩展。
提供
- 一个带有视图的控制台动作以执行状态转换
- 一个模型行为,可以将自定义逻辑绑定到状态转换
- 一个控制台方法来构建菜单
- 状态图配置
安装
目前,仓库是私有的,因此请手动将其添加到composer.json文件中
"require": { "netis/yii2-fsm": "dev-master" },
在配置中添加别名 'aliases' => [ '@netis' => '@vendor/netis', ],
使用方法
run example `./yii fsm/create "\netis\assortment\models\Product" "application_status_changes" "productPricings"`
- 在所选AR模型中实现
IStateful
接口。您可能需要在文件顶部添加Yii::import('fsm.components.*')
。 - 调整规则以从
transition
场景中删除属性。应使用NetActiveRecord.filterRules()
辅助方法进行此操作。 - 在控制器中添加
state
动作并将其包含在上下文菜单中,根据注释进行调整
public function actions() { return array( 'state'=>array( 'class'=>'fsm.components.StateAction', 'updateAuthItem' => 'update Model', // adjust here, insert AR model name 'isAdminCallback' => array('NetController', 'isAdmin'), ), ); } protected function buildNavigation(CAction $action, NetActiveRecord $model, $readOnly = false, $horizontal = true) { $result = parent::buildNavigation($action, $model, $readOnly, $horizontal); if ($horizontal || $model->primaryKey !== null) { Yii::import('fsm.components.StateAction'); $transitions = $model->getTransitionsGroupedByTarget(); $this->menu[] = StateAction::getContextMenuItem($action, $transitions, $model, $model->status_id, self::isAdmin()); // adjust status column } return $result; }
待办事项
- 将状态转换逻辑分组到命名的工作流程中