ساخت فیلد تاییدیه

سلام .

فرض کنید که شما یک فرمی ساختید که داخلش فیلد دلخواه مثلا فیلد تلفن دارید . حالا میخواید یک فیلد مشابه همون فیلد ایجاد کنید که کاربر این 2 تا فیلد رو دقیقا عین هم پر کنه وگرنه نتونه فرم رو ارسال کنه . دقیقا مثل فیلد ایمیل و تایید ایمیل یا فیلد پسورد و تایید پسورد که باید دقیقا یکسان پر بشن .

بازم گرویتی فرمز با توجه به انعطافی که داره این مشکل رو حل کرده . ولی اگه یه درصد هم احساس میکنید که شخص مبتدی ای هستید بی خیال این آموزش بشید .

برای این کار باید کد زیر رو داخل فانکشن قالب تون قرار دارید .

قبل از هر کاری از پوشه قالبتون داخل هاست یک کپی بگیرید واسه اطمینان .

فایل functions.php قالب رو باز کنید و برید دقیقا خط آخرش .

خوب دقت کنید که خط آخرش آیا علائم <? وجود داره یا نه .

اگه وجود نداشت که هیچی ولی اگه داشت حذفش کنید .  دقت کنید که فقط همین عبارت که شامل یک علامت کوچکتر بزرگتری و یک علامت سوال هست رو حذف کنید نه چیز دیگه رو . حالا دقیقا بعدش کد زیر رو اضافه کنید .

add_filter('gform_validation', 'gfcf_validation');
function gfcf_validation($validation_result) {
    global $gfcf_fields;
    
    $form = $validation_result['form'];
    $confirm_error = false;
    
    if(!isset($gfcf_fields[$form['id']]))
        return $validation_result;
    
    foreach($gfcf_fields[$form['id']] as $confirm_fields) {
        
        $values = array();
        
        // loop through form fields and gather all field values for current set of confirm fields
        foreach($form['fields'] as $field) {
            if(!in_array($field['id'], $confirm_fields))
                continue;
                
            $values[] = rgpost("input_{$field['id']}");
            
        }
        
        // filter out unique values, if greater than 1, a value was different
        if(count(array_unique($values)) <= 1)
            continue;
        
        $confirm_error = true;
        
        foreach($form['fields'] as &$field) {
            if(!in_array($field['id'], $confirm_fields))
                continue;
            
            // fix to remove phone format instruction
            if(RGFormsModel::get_input_type($field) == 'phone')
                $field['phoneFormat'] = '';
            
            $field['failed_validation'] = true;
            $field['validation_message'] = 'Your values do not match.'; 
        }
        
    }
    
    $validation_result['form'] = $form;
    $validation_result['is_valid'] = !$validation_result['is_valid'] ? false : !$confirm_error;
    
    return $validation_result;
}

function register_confirmation_fields($form_id, $fields) {
    global $gfcf_fields;
    
    if(!$gfcf_fields)
        $gfcf_fields = array();
        
    if(!isset($gfcf_fields[$form_id]))
        $gfcf_fields[$form_id] = array();
    
    $gfcf_fields[$form_id][] = $fields;
}

تا اینجای کار ما یه کد کلی قرار دادیم که این قابلیت رو به گرویتی فرمز اعمال کنه اما در مرحله بعدی باید بهش بگیم که دقیقا واسه کدوم فرم و کدوم فیلدها باید این دستورات اعمال بشه .
خب حالا دقیقا زیر کد بالا کد زیر رو قرار بدید .

register_confirmation_fields(1, array(2, 3)); 

بجای عدد 1 باید آیدی فرمتون رو قرار بدید . بجای عدد 2 باید آیدی فیلد مورد نظرتون رو بزارید . بجای عدد 3 هم باید آیدی فیلد تاییدیه رو وارد کنید .

خب اما اگه نمیدونید چطوری باید آیدی فرم و فیلدتون رو پیدا کنید به صورت زیر عمل کنید :

به منوی فرم ها برید و فرم مورد نظرتون رو انتخاب کنید تا ویرایش بشه . در صفحه ویرایشگر فرم بالای صفحه سمت راست ؛ دقیقا زیر عبارت ویرایشگر فرم نوشته ID: سمت چپش هم اسم فرمتون رو نوشته . خب آیدی فرم که تا اینجا پیدا شد .

برای پیدا کردن آیدی فیلد هم توی همون صفحه ویرایش گر فرم با موس برید روی فیلد مورد نظر، حالا میبینید که بالای فیلد سمت چپ ، نوشته چک باکس : شماره فیلد : … خب شماره فیلد همون آیدی فیلد هست . آیدی فیلد هم که ازینجا پیدا شد .

خب دیگه کار تمومه .

درباره نویسنده

نوشته های مرتبط

13 نظر

  1. hossein

    با سلام خدمت جناب آقای ابراهیمی
    با توجه به انعطاف زیاد این افزونه،آیا میشه یه فیلد برای تغییر رمز عبور کاربری ورود به سایت ایجاد کرد؟؟؟
    در صورت وجود میشه راهنمایی کنید.
    با تشکر

    پاسخ
  2. ehsan12

    با سلام و خسته نباشید من یه سوال داشتم از خدمتتون
    اگه من از Gravity form به عنوان ارسال خرابی لینک در یک سایت استفاده کنم
    ایا امکانش هست که پس از پر شدن یه Text box و کامل کردن توضیحات پس از ارسال ID صفحه مورد نظر یا لینک صفحه ی که فرم تو اون پر شده برای ادمین ارسال بشه؟

    پاسخ
  3. امیر

    سلام
    میخواستم تمام تاییدیه های فرم (confirmation)
    در بالای سایت نمایش داده شود و در صفحه اصلی و عموم انرا ببینند
    چطور میشه اینکار کرد؟
    با
    gform_confirmation_actions
    میشه یا
    gform_confirmation
    یا راه دیگر؟

    پاسخ
  4. mt.rezaei

    سلام و خسته نباشید خدمت آقای گرویتی فرم پارسی عزیز
    با تشکر از پاسخ هاتون، لطفا اگه امکان داره راهنمایی کنید که چطوری فیلد رمز عبور رو درست کنم.

    پاسخ

نظری بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


7 + 4 =