文档未完成…
<?php
/**
* 表字段配置
* @return FieldCollection
*/
public function fields(): FieldCollection
{
$step1=FieldStep::make('step1',StepCheck::make(function (self $info=null){
//这个方法里面检测,数据下一个步骤是否是此步骤
//$info为空代表数据是新增
//这个步骤的意思就是,新增的时候可以填写此步骤相关字段
return $info === null;
}));
$step2=FieldStep::make('step2',StepCheck::make(function(self $info=null)use($step1){
//eqEndStep 是一个封装好的方法,用来判断$info当前的步骤是否就是步骤$step1,如果是返回true
//这个步奏的意思是,当数据($info)的步骤与$step1一样时,根据数据($info)获取到的下一步就是此步骤,数据编辑下一步的时候是此步骤的相关字段
return eqEndStep($step1,$info);
}));
$stepKey3='step3';
$step3=FieldStep::make($stepKey3,StepCheck::make(
//第一个参数未必填 类型就是function
function(self $info=null,BaseModel $baseInfo=null,ModelField $field=null)use($step2){
//此方法完整的参数是这样子的
//$info:相关数据信息
//$baseInfo:有父表的时候有值,父表信息
//$field:当前字段信息,此处必定为null。这里用不到
return eqEndStep($step2,$info);
},
//第二个参数为可选参数,它的默认值就是下面这个样子。代表的是,数据当前步骤编辑的时候(非下一步),验证此步骤是否满足条件。此处的意思是当数据的步骤与当前此步骤一样时,显示此步骤的字段编辑
function(self $info=null,BaseModel $baseInfo=null,ModelField $field=null)use($stepKey3){
if(!$info){
return false;
}
return eqEndStep($stepKey3,$info);
}
));
return FieldCollection::make([
StringField::init('name','项目名称')->steps($step1)
,RadioField::init('type','项目类型')->steps($step1)
,DateField::init('start_time','项目开始时间')->steps($step2)
,DateField::init('end_time','项目结束时间')->steps($step2)
//setFieldCheckFunc 为可选,且与hideFields功能重叠。不建议使用(详情页查看时未处理)
//传入参数与定义步骤的时候参数一样。不过它的$field参数是有值的。用来判断 $step3 步骤的时候,【下一步/编辑】是否可填写此字段
,DecimalField::init('money', '项目金额')->steps($step3->setFieldCheckFunc(StepCheck::make($function1,$function2))
//与上面的意思一样
,ImagesField::init('img','图片测试')->steps($step3->setFieldCheckFunc($function1,$function2))
])->step(true);//配置完成后默认是关闭步骤的,需要开启
}
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)
$parma
为 array
或者 boolean
传入boolean
时:代表启用或关闭步骤。
传入array
时:代表启用步骤,且设置配置。可传入的参数:
<?php
[
'enable'=>false,//是否启用
'listShow'=>true,//是否在列表中显示当前步骤
//查看页面(show)中,判断要显示哪些字段的类型
//【fieldSort:根据字段排序来,当前步骤到了哪一个字段那里,那么它之前的字段全部显示】
//【dataStepHistory:根据数据存储的步骤字段来显示哪些步骤】
//【可以自定义一个函数,参数是要显示的对象function($fields,$info,$baseInfo):void】
'showSortSteps'=>'dataStepHistory',
]
$field->steps($param)
$param可以是:
- 数组:
[$FieldStep1,$FieldStep2]
FieldStep
对象
设想的是,一个字段可以在多个步骤中