netis/yii2-fsm

为Yii PHP框架提供切换AR模型状态工具的扩展。

安装: 147

依赖: 0

建议者: 0

安全: 0

星星: 2

关注者: 4

分支: 0

类型:yii2-extension

dev-master 2016-12-16 14:08 UTC

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;
    }

待办事项

  • 将状态转换逻辑分组到命名的工作流程中