我的ii2项目中有一个向导表单.我的表单是yii2活动表单的类型.
现在,我想分别验证每个部分.例如,向导的第一部分包括t1,t2,t3,第二部分包括t4,t5.当用户单击第1部分的下一步按钮时,我只想验证t1,t2和t3,而不要验证t4和t5.我应该如何在yii2中执行此操作?
编辑
请注意,我要使用yii2验证程序,并且不想再次在我的jquery代码中编写验证规则.
编辑:请检查代码
$wizard_config = [
'id' => 'stepwizard',
'steps' => [
1 => [
'title' => 'اطلاعات پروژه',
'icon' => 'fa fa-info',
'content' =>
$form->field($model, 'title') .
$form->field($model, 'language_id')->dropDownList($language, ['style' => 'padding-top: 0;', 'prompt' => 'زبان']) .
$form->field($model, 'project_type_id')->dropDownList($project_type, ['style' => 'padding-top: 0;']) .
$form->field($model, 'text_type_id')->dropDownList($text_type, ['style' => 'padding-top: 0;']) .
$form->field($model, 'description')->textarea(['style'=>'height: 140px;resize:none;'])
,
],
2 => [
'title' => 'فایل های پروژه',
'icon' => 'fa fa-upload',
'content' =>
$form->field($model, 'proj_file')->fileInput() .
$form->field($model, 'pages') .
$form->field($model, 'template')->fileInput()
,
],
3 => [
'title' => 'زمان و قیمت',
'icon' => 'fa fa-clock-o',
'content' =>
$form->field($model, 'deadline_day') .
$form->field($model, 'deadline_time') .
$form->field($model, 'doing_way_id') .
$form->field($model, 'user_id') .
$form->field($model, 'pawn_money') .
$form->field($model, 'is_group')
,
],
4 => [
'title' => 'تایید',
'icon' => 'fa fa-check',
'content' => '<h3>Step 3</h3>This is step 3',
],
],
'start_step' => 1,
];
解决方法:
您可以针对不同的场景将模型中的步骤分开.
public function scenarios()
{
$scenarios = parent::scenarios();
$scenarios['step1'] = ['login', 'username'];
$scenarios['step2'] = ['t1', t2];
return $scenarios;
}
然后在每个步骤中为模型分配方案
$user->scenario = 'step1';
并仅验证模型属性的一部分.您必须编写一个ajax操作,该操作可以映射步骤和方案并返回验证结果.