验证形式yii2的一部分

时间:2016-01-11 08:44:46

标签: php validation yii2

我的yii2项目中有一个向导表单。我的表单是yii2活动表单的类型。 现在我想分别验证每个部分。例如,向导的第一部分包括t1t2t3,第二部分包括t4t5。当用户点击第1部分的下一步按钮时,我只想验证t1t2t3,但不是t4t5。我应该如何在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,
];

2 个答案:

答案 0 :(得分:2)

您可以针对不同的方案分离模型中的步骤。

 public function scenarios()
{
    $scenarios = parent::scenarios();

    $scenarios['step1'] = ['login', 'username'];
    $scenarios['step2'] = ['t1', t2];

    return $scenarios;
}

然后在每个步骤中为模型分配方案

 $user->scenario = 'step1';

并仅验证模型属性的一部分。你必须编写ajax动作,它可以映射步骤和场景并返回验证结果。

答案 1 :(得分:1)

这是解决方案。非常感谢Amin ChelohAlexander Makarov提供this文章。 用于验证表单的一个输入。我们应该使用这一行代码。

$('#id-of-form').yiiActiveForm('validateAttribute', 'input id');