承接 dergus/yii2-whitewizard 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

dergus/yii2-whitewizard

Composer 安装命令:

composer require dergus/yii2-whitewizard

包简介

A Yii2 extension for easy handling multistep forms.

README 文档

README

A Yii2 extension for easy handling multistep forms.

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist dergus/yii2-whitewizard "*"

or add

"dergus/yii2-whitewizard": "*"

to the require section of your composer.json file.

Usage

There are two ways of using this action: 1)Every step is just normal yii action. 2)All steps in action and differtiated by the http varible

==============================================

How to use extension in 1-st way:


<?php
namespace app\controllers;

use Yii;
use app\models\First;
use app\models\Second;
use app\models\Third;
use dergus\whitewizard\WhiteWizard;

class SiteController extends \yii\web\Controller
{

//first you need to add extension in 
//controllers behaviors with configuration:
    public function behaviors()
    {
	    /**
	     * controller actions which
	     * are available only in
	     * step chain
	     * @var array
	     */
        $closedActions=['confirmation'];
            /**
     * array of steps in order
     * in which the wizard
     * will process them
     * can be in two formats:
     * 1-st, when steps are
     * action ids:
     * ['first','second','third'].
     * 2-nd, when all the steps in on action
     * and they're distinguished by query
     * param, it shuold associative
     * array where the keys are action ids
     * and the values are arrays with
     * step names:
     * ['index'=>[
     *     'first',
     *     'second'
     * ],'contact'=>[
     *    'first',
     *    'second' 
     * ]]
     * 
     * 
     * @var array
     */
        $steps[]='first';
        $steps[]='second'

        return [

            'WhiteWizard'=>[
                'class'=>WhiteWizard::className(),
                '_steps'=>$steps,
                '_closedActions'=>$closedActions,
                /**
			     * step after which
			     * user can't go backward
			     * @var string
			     */
                '_noBackStep'=>'second'

            ],

        ];
    }

    Then in actions:

    public function actionFirst()
    {

		
        $model=new First;

        //must do to show user his data
        //if he went back

        if(($s=Yii::$app->session->get('first'))!==null){
            $model=$s;
        }
        if ($model->load(Yii::$app->request->post())) {
            if($model->validate()){
                $this->handleStep();//must call if the step is successfull
                Yii::$app->session->set('first',$model);//must do to save data from this step for further saving
                $next='second';
                return $this->redirect([$next]);}
            else{
            	//must call if data is not valid
                $this->notHandled();
            }
        } 

		return $this->render('first',compact('model'));
    }

All the same:

    public function actionSecond()
    {

		
        $model=new Second;

        //must do to show user his data
        //if he went back

        if(($s=Yii::$app->session->get('second'))!==null){
            $model=$s;
        }
        if ($model->load(Yii::$app->request->post())) {
            if($model->validate()){
                $this->handleStep();//must call if the step is successfull
                Yii::$app->session->set('second',$model);//must do to save data from this step for further saving
                $next='third';
                return $this->redirect([$next]);}
            else{
            	//must call if data is not valid
                $this->notHandled();
            }
        } 

		return $this->render('third',compact('model'));
    }

And the last step shuld be a little bit different:

    public function actionThird()
    {

		
        $model=new Third;

        //must do to show user his data
        //if he went back

        if(($s=Yii::$app->session->get('third'))!==null){
            $model=$s;
        }
        if ($model->load(Yii::$app->request->post())) {

        	//the implemenatation of $model->saveData() method
        	//is up ti you but it should save data from all the steps.
        	//Data from previous steps can be accessed from session
			//by key you save it, for example:
			//Yii::$app->session->get('first')

            if($model->validate() && $model->saveData()){
                
                //claen the session

                Yii::$app->session->set('first');
                Yii::$app->session->set('second');
				Yii::$app->session->set('third');
				$this->allDone();
                $next='success';
                return $this->redirect([$next]);}

        } 

		return $this->render('success',compact('model'));
    }

}

The usage for 2-nd way(not recommended cause makes code messy):

---- will be added soon ----

dergus/yii2-whitewizard 适用场景与选型建议

dergus/yii2-whitewizard 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 123 次下载、GitHub Stars 达 1, 最近一次更新时间为 2015 年 11 月 28 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「extension」 「Forms」 「yii2」 「multipart」 「multistep」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 dergus/yii2-whitewizard 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 dergus/yii2-whitewizard 我们能提供哪些服务?
定制开发 / 二次开发

基于 dergus/yii2-whitewizard 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 123
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 10
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2015-11-28