2016-01-11 3 views
3

У меня есть форма мастера в моем проекте yii2. Моя форма является типом активной формы yii2. Теперь я хочу проверить каждую деталь отдельно. например, первая секция мастера включает t1, t2, t3 и второй раздел включает t4, t5. когда пользователь нажимает кнопку следующего шага в разделе 1, я хочу просто подтвердить t1, t2 и t3, но не t4 и t5. Как мне это сделать в yii2?validate часть формы yii2

Редактировать

Пожалуйста, обратите внимание, что я хочу использовать yii2 валидатор и не хотят писать правила проверки в моем Jquery код еще раз.

Edit: Пожалуйста, проверьте код

$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, 
]; 
+1

я думаю, что вы должны принять t1, t2, t3 в различном сНе и t4, t5 в различных ДИВ и проверки в соответствии с DIV – jilesh

+0

Я сделал этот приятель. Пожалуйста, объясните больше о своем решении. @jilesh –

+0

Пожалуйста, введите код @BehzadHassani. –

ответ

1

Вот решение. Огромное спасибо Amin Cheloh и Alexander Makarov с кодом this. для проверки только одного ввода формы. мы должны использовать этот один код строки.

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

Это только проверка на стороне клиента. Вам по-прежнему необходимо выполнить проверку на стороне сервера для обеспечения безопасности, – arogachev

+0

да, мы можем использовать сценарий для проверки ajax. Это была основная проблема этого вопроса @arogachev –

+1

Получил это, это было немного непонятно из вопроса для меня. – arogachev

1

Вы можете отделить шаги в модели для различных сценариев.

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

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

    return $scenarios; 
} 

Затем назначьте сценарий для модели в каждой шаги

$user->scenario = 'step1'; 

и проверять только часть атрибутов модели. Вы должны написать ajax-действие, которое может отображать шаг и сценарий и возвращать результат проверки.