گرویتی فرم

ساخت فیلد تایید برای فیلد دیگر (مشابه پسورد)

تاریخ: پنجشنبه ۱۴ اسفند ۱۳۹۳

دسته بندی:  آموزش

تعداد نظر: ۱۵

تعداد بازدید: ۷۰۷۸


سلام
فرض کنید که شما یک فرمی ساختید که داخلش فیلد دلخواه مثلا فیلد تلفن دارید. حالا میخواید یک فیلد مشابه همون فیلد ایجاد کنید که کاربر این 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: سمت چپش هم اسم فرمتون رو نوشته. خب آیدی فرم که تا اینجا پیدا شد.

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

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


۱۵ دیدگاه برای این محصول ثبت شده است!


ارسال نظر برای این مطلب غیرفعال شده است.