文档未完成…

    1. <?php
    2. /**
    3. * 表字段配置
    4. * @return FieldCollection
    5. */
    6. public function fields(): FieldCollection
    7. {
    8. $step1=FieldStep::make('step1',StepCheck::make(function (self $info=null){
    9. //这个方法里面检测,数据下一个步骤是否是此步骤
    10. //$info为空代表数据是新增
    11. //这个步骤的意思就是,新增的时候可以填写此步骤相关字段
    12. return $info === null;
    13. }));
    14. $step2=FieldStep::make('step2',StepCheck::make(function(self $info=null)use($step1){
    15. //eqEndStep 是一个封装好的方法,用来判断$info当前的步骤是否就是步骤$step1,如果是返回true
    16. //这个步奏的意思是,当数据($info)的步骤与$step1一样时,根据数据($info)获取到的下一步就是此步骤,数据编辑下一步的时候是此步骤的相关字段
    17. return eqEndStep($step1,$info);
    18. }));
    19. $stepKey3='step3';
    20. $step3=FieldStep::make($stepKey3,StepCheck::make(
    21. //第一个参数未必填 类型就是function
    22. function(self $info=null,BaseModel $baseInfo=null,ModelField $field=null)use($step2){
    23. //此方法完整的参数是这样子的
    24. //$info:相关数据信息
    25. //$baseInfo:有父表的时候有值,父表信息
    26. //$field:当前字段信息,此处必定为null。这里用不到
    27. return eqEndStep($step2,$info);
    28. },
    29. //第二个参数为可选参数,它的默认值就是下面这个样子。代表的是,数据当前步骤编辑的时候(非下一步),验证此步骤是否满足条件。此处的意思是当数据的步骤与当前此步骤一样时,显示此步骤的字段编辑
    30. function(self $info=null,BaseModel $baseInfo=null,ModelField $field=null)use($stepKey3){
    31. if(!$info){
    32. return false;
    33. }
    34. return eqEndStep($stepKey3,$info);
    35. }
    36. ));
    37. return FieldCollection::make([
    38. StringField::init('name','项目名称')->steps($step1)
    39. ,RadioField::init('type','项目类型')->steps($step1)
    40. ,DateField::init('start_time','项目开始时间')->steps($step2)
    41. ,DateField::init('end_time','项目结束时间')->steps($step2)
    42. //setFieldCheckFunc 为可选,且与hideFields功能重叠。不建议使用(详情页查看时未处理)
    43. //传入参数与定义步骤的时候参数一样。不过它的$field参数是有值的。用来判断 $step3 步骤的时候,【下一步/编辑】是否可填写此字段
    44. ,DecimalField::init('money', '项目金额')->steps($step3->setFieldCheckFunc(StepCheck::make($function1,$function2))
    45. //与上面的意思一样
    46. ,ImagesField::init('img','图片测试')->steps($step3->setFieldCheckFunc($function1,$function2))
    47. ])->step(true);//配置完成后默认是关闭步骤的,需要开启
    48. }

    FieldStep

    FieldStep::make($stepKey,$StepCheck,$titleOrCinfig)

    $stepKey为一个字符串(汉字字母都行),一个表的步骤中唯一。
    $StepCheck是一个StepCheck对象。
    $titleOrCinfig当它是一个字符串的时候,代表步骤的标题;当它是一个数组的时候设置配置,可配置为

    <?php
    
    [
        'title'=>'第一步',
      'color'=>'#000000',//这一步骤的颜色
    ]
    

    StepCheck

    StepCheck::make($function1,$function2)

    它在定义步骤的时候用到,第一个参数是判断数据的下一步是否是 这个步奏。第二个参数是用来判断,数据的当前步骤是否是这个步奏。
    $function1必填,$function2非必填。
    $function2的默认值是当数据的最后一个步骤的值,与当前步骤的值一直,就返回true,否则返回false

    FieldCollection::make([…])->step($parma)

    $parmaarray 或者 boolean
    传入boolean时:代表启用或关闭步骤。
    传入array时:代表启用步骤,且设置配置。可传入的参数:

    <?php
            [
            'enable'=>false,//是否启用
            'listShow'=>true,//是否在列表中显示当前步骤
    
            //查看页面(show)中,判断要显示哪些字段的类型
            //【fieldSort:根据字段排序来,当前步骤到了哪一个字段那里,那么它之前的字段全部显示】
            //【dataStepHistory:根据数据存储的步骤字段来显示哪些步骤】
            //【可以自定义一个函数,参数是要显示的对象function($fields,$info,$baseInfo):void】
            'showSortSteps'=>'dataStepHistory',
        ]
    

    $field->steps($param)

    $param可以是:

    1. 数组:[$FieldStep1,$FieldStep2]
    2. FieldStep对象

    设想的是,一个字段可以在多个步骤中