ارزیابی پویا در فرم ها چیست؟

سلام
حتما در حین ساخت فرم، تو تب “پیشرفته” برخی فیلدها، متوجه گزینه “اجازه دادن به فیلد برای ارزیابی پویا” شدید.

این سوال از طرف دوستان پرسیده میشد که کاربرد این گزینه دقیقا چی هست؟

توی این پست آموزشی کاربرد کامل این گزینه رو توضیح میدیم:

فرض کنید که شما یک فرم ساختید و میخواهید که مقدار برخی از فیلدها رو از پیش مشخص یا تعیین کنید ولی نمیخواید که این مقادیری که تعیین میکنید ثابت باشن و دوست دارید که هر سری بتونید این مقادیر رو تغییر بدید بدون اینکه هربار فرمتون رو ویرایش کنید.

خب روش اولی که به ذهنتون میرسه اینه که توی همون تب “پیشرفته” فیلدها ، قسمت “مقدار پیشفرض” رو پرکنید. ولی نه ، روش ما این نیست.
درسته وقتی که قسمت “مقدار پیشفرض” رو پر میکنید زمانیکه فرم برای کاربر ظاهر میشه ، این مقدار پیشفرض تعیین شده بهش نمایش داده میشه که اونم میتونه تغییرش بده اما این مقدار پیشفرض یک مقدار ثابتی هست و اگه بخواید که این مقدار رو تغییر بدید باید دوباره فرم رو ویرایش کنید .

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

اما روش استفاده از این ارزیابی های پویا:

وقتی شما تیک مربوط به گزینه “اجازه دادن به فیلد برای ارزیابی پویا” رو در تب “پیشرفته” فیلد میزنید یک گزینه دیگه به اسم “نام پارامتر” زیر همون گزینه ظاهر میشه. انتخاب نام پارامتر کاملا اختیاری است. به فرض من یک فیلد محصول انتخاب میکنم و نام پارامترم رو مثل تصویر زیر، میذارم: price

dynamic

خب حالا من به سه روش میتونم از این پارامتر استفاده کنم:

روش اول = کوئری استرینگ ها : فرض کنید من یک برگه توی سایت ساختم که نامک اون برگه باشه: test .حالا داخل این برگه من از طریق دکمه “افزودن فرم” ، فرمی که بالا توضیح دادم رو اضافه کردم. برای استفاده از ارزیابی پویا ، آدرس برگه رو توی مرورگرم به شکل زیر وارد میکنم :

http://site.com/test?price=5000

یعنی بعد از آدرس برگه یک علامت سوال انگلیسی وارد میکنم و بعد از اون هم نام پارامترم رو وارد میکنم. بعد از نام پارامترم مساوی با مقدار مد نظرم رو وارد کردم.

حالا میبینید که با لود شدن برگه و ظاهر شدن فرمم، داخل فیلد محصولم به صورت خودکار عدد 5000 تومان تایپ شده .

اما برای استفاده از ارزیابی پویا های چند فیلد فقط قبل از نام پارامتر اول علاومت سوال میذارم و از نام پارامتر دوم به بعد از علامت & استفاده میکنم . مثل نمونه زیر :

http://site.com/test?price=5000&name=hannanstd&age=22

روش دوم = استفاده از شورت کد ها : میتونید از شورت کد هایی مثل شورت کد زیر برای به کار گیری ارزیابی پویا استفاده کنید. یعنی باید به شورت کد های قبلی تون field_values رو هم اضافه کنید . دقت کنید که باز هم برای جدا کردن پارامتر ها از علامت & استفاده کنید. مثل شورت کد زیر :

[https://gravityforms.ir/wp-content/uploads/saman-1.jpgform* id=1 title="true" description="true" ajax="true" field_values='parameter_name1=value1¶meter_name2=value2']

تو شورت کد بالا بجای عدد 1 باید آیدی فرم رو وارد کنید بجای parameter_name های 1 و 2 هم باید نام پارامتر های فیلدهای 1 و 2 رو وارد کنید و به جای value های 1و 2 نیز مقادیر پیشفرضی که برای این فیلدها مد نظر دارید رو .
تذکر: موقع استفاده از کد بالا اون * رو حذف کنید.

روش سوم = هوک های وردپرس ( مناسب برای توسعه دهندگان و برنامه نویسان) : توی هوک زیر بجای your_parameter باید نام پارامتر خودتون و بجای hannan هم مقدار پیشفرضی که مد نظر دارید رو وارد کنید .

add_filter( 'gform_field_value_your_parameter', function ( $value ) {
	return 'hannan';
}, 999, 1 );
4.7/5 - (13 امتیاز)

72 پاسخ

  1. ممنون
    خیلی به دردم خورد
    تا الان فکر می‌کردم از طریق پارامتر نمیشه مقدار توی فیلدها درج کرد.

  2. سلام و خسته نباشید
    میخواستم بدونم من میتونم از این قابلیت برای برای چند تا محصول استفاده کنم
    بطور مثال من چندتا محصول دارم که هر کدوم را داخل یک صفحه تبلیغ کردم و انتهای اون صفحه یک دکمه ثبت سفرش گذاشتم و بهش لینک این فرم را دادم
    میخام وقتی کلیک شد روی دکمه و رفت به صفحه فرم سفارش اون محصولی را انتخاب کنه که در موردش توضیح داده بود
    البته فکر کنم ارزیابی پویا هم همین باشه ولی فقط چطور باید بگم کدوم محصول را از فیلد محصول که بصورت لیستی است انتخاب کنه
    ممنون

      1. سلام
        از فیلد لیست باز شو؟؟!!
        ممنون
        ی سوال دیگه user registration را از کجا دانلود کنم
        و یدونه دیگه اینکه این امکان وجود دارد که یک فرم مخصوص کاربران سایت مثلا مدیر باشه و اون اطلاعاتی را وارد کنه و ی فرم دیگه هم واسه بازدید کنندگان باشه که بتونه از اطلاعات اون فرم قبلی استفاده کنه
        ممون میشم جواب بدین
        تشکر

        1. سلام .
          از اینجا :
          http://develop.gravityforms.ir/3929/gravity-persian-1-7-released/#comment-2094

          برای سوال: ” اینکه این امکان وجود دارد که یک فرم مخصوص کاربران سایت مثلا مدیر باشه و اون اطلاعاتی را وارد کنه و ی فرم دیگه هم واسه بازدید کنندگان باشه که بتونه از اطلاعات اون فرم قبلی استفاده کنه” پست زیر میتونه کمکتون کنه .

          http://develop.gravityforms.ir/category/learning/page/2/

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

        1. سلام
          لیست بازشو هم فرقی نداره مثل بقیه هست . مثلا تو لیست بازشو سه تا گزینه دارید : گزینه اول – گزینه دوم – گزینه سوم . پارامتر ارزیابی پویا رو هم گذاشتید test . به صورت زیر میشه :
          http://site.com/?test=گزینه دوم

          حالا اگه با فارسی مشکل پیدا کردید توی همون تنظیمات لیست بازشو تیک “نمایش مقدار ها” رو بزنید برای هر گزینه یک مقدار در نظر بگیرید و توی آدرس بار اون مقدار رو وارد کنید /

    1. سلام . یعنی انقدر بد توضیح دادم ؟ 😀
      والا ساده اش میشه شما از طریق url یا به قولی لینک موجود تو آدرس بار میتونید مقدار فیلدها رو تغییر بدید . البته مقدار پیشفرض رو . بعدا کاربر ویرایشش میکنه .

      1. ممنونم مهندس.نه شما خوب توضیح دادید.من بد متوجه شده بودم.تشکر.
        یه پیشنهاد داشتم شاید ربطی به این سایت نداشته باشه. همیجا بگم یا به ایمیلتون بفرستم.

  3. سلام
    ممنون از مطالب مفیدتون یک سوالی داشتم.
    چطور می تونم یه فرمی ایجاد کنم که کاربر بتونه یک مطلبی رو بنویسه و بعد از اتصال به درگاه مطلبش تو سایت ثبت بشه ممنون میشم راهنمایی بفرمایید.
    ممنون.

    1. سلام . به صورت پیشفرض امکانش وجود داره . از فیلدهای “ارسال نوشته” گرویتی فرم استفاده کنید . بعدش که میخواید به درگاه متصلش کنید بخش پست ها توی تنظیمات درگاه اضافه میشه و میپرسه اگه پرداخت موفق بود وضعیت پست چی بشه نبود چی بشه . کلا کار کنید راحت دستتون میاد .

  4. سلام برمدیر محترم
    یه سوال:
    چه طوری میشه یه فرم ساخت که کاربر اونو پر کنه و بعد توسط مدیر سایت تایید بشه و اون فرم به عنوان یه پست در سایت قرار بگیره

      1. من این کارو انجام دادم و از طریق “ارسال نوشته” فرم را درست کردم ولی وقتی فرم ارسال میشه اطلاعات کامل روی سایت نشون داده نمیشه و فقط عنوان و تصویر شاخص نشون داده میشه
        میشه راهنماییم کنید

  5. من یه فرم میخوام طراحی کنم تا اون فرم پست بشه
    بیشتر از “زمینه دلخواه” استفاده میکنم تا بتونم فرمی را که میخوام ارسال بشه
    فیلدهایی میخوام مثل لیست کشویی-عکس-ادرس-تلفن-وب سایت-متن نوشته
    حالا این هارو طراحی کردم ولی به صورت پست نمیره نمیدونم چیکار کنم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

    1. سلام . برای اینکه به صورت پست بیاره باید از فیلدهای “ارسال نوشته” استفاده کنید . که زمینه دلخواه رو هم ساپورت میکنه ولی برای استفاده از لیست کشویی و غیره استفاده از پلاگین جانبی زیر هم پیشنهاد میشه .
      https://wordpress.org/plugins/gravity-forms-custom-post-types/screenshots/

      ضمن اینکه گرویتی فرم به صورت پیشفرض با advanced custom fileds هم سازگاره .

      1. advanced custom fileds را چطوری با Gravity From هماهنگ میکنند؟
        من به تازه کارم میشه واسم توضیح مختصر بدید
        ممنون میشم

  6. سلام ممنونم از راهنمایی های که در این سایت میگذارید
    من یک سئوال مهم برام مطرح شده که به مشکل خوردم و فکر می کنم که بتوانید راهنماییم کنید با گرویتی فرم سعی دارم که یک صرافی آنلاین را اندازی کنم اما مشکل من این از که چطور اطلاعات یک رادیو باکس را پویا کنم که از اسکریپتی که خودم مینویسم ورودی نرخ ارز روز را دریافت کند و دیگر مشکل اینکه مداوم تمام فرم ها را تغییر بدیم وجود نداشته باشه اگر راه حلی دارید واقعا من به کمک نیاز دارم

    1. سلام شما باید توی اسکریپت خودتون یک api تعریف کنید و یا کاری کنید بشه حداقل از طریق cURL یک اطلاعاتی رو به اسکریپت شما ارسال و پاسخ رو دریافت کرد و سپس یه پلاگین هم برای تغییر قیمت توی گرویتی بنویسید . که البته به نظرم اگه بخواید همچین چیزی رو بنویسید بهتره بجاش یه اسکریپت جدا بنویسید.

  7. سلام
    خیلیی خوب بود
    من از ووکامرس استفاده میکنم
    میخواستم اطلاعات مشتری ووکامرس رو توی فیلدها نمایش بده مثلا آدرس تلفن استان و…

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

  8. سلام
    و ممنون از آموزش خوبتون 🙂

    اگر یه فرمی داشته باشیم؛ و فرضا بخوایم توی قسمت نام و فامیل و ایمیل کاربر؛ چیزی رو که موقع ثبت نام درج کرده بطور پیشفرض ثبت کنیم؛ چه کاری باید انجام بدیم؟
    مثل این کامنت بالایی شورت کد خاصی هست؟ اگه هست ممنون میشم راهنمایی بفرمایید به لیستی از این شورت کد ها دسترسی پیدا کنم.

    با سپاس از شما
    /مرتضی/

      1. سلام و ممنون از شما.
        ببخشید خودم کمی بی دقتی کردم.

        فرضا یک فیلد «متن تک خطی» داریم.
        به تب «پیشرفته» باید بریم.
        جلوی فیلد «مقدار پیشفرض»؛ یه آیکون کوچیک هست؛ که اگه روی اون بزنیم؛‌ لیستی از مواردی مثل «ایمیل کاربر» «نام کاربری» «نام نمایشی» کاربر میاد.

        برای نام نمایشی کاربر؛ این عبارت رو خودش بعنوان پیش فرض قرار میده:
        {user:display_name}
        برای ایمیلی که موقع ثبت‌نام وارد کرده: {user:user_email}
        و همینطور برای خیلی از موارد دیگه هم وجود داره.

        که قابلیت ویرایش هم دارن وقتی فرم نمایش داده میشه.
        گفتم شاید به درد دوستان بخوره.
        ممنون
        /مرتضی/

  9. من بارها از این روش در سایت های مختلف استفاده کردم و همیشه هم جواب گرفتم ولی این بار هر بار که می خوام پارامترها رو ارسال کنم با همین شیوه note found میشه راه حلی هست؟

  10. سلام مهندس
    خسته نباشی
    من میخوام برای فیلد متن پاراگرافی محدودیت کلمه بزارم…مثلا 10 کلمه… فقط میخوام یه کلمه رو شمارش کنه
    در حالت عادی اکان محدودیت کارکتر وجود داره یعنی حروف و حتی اسپس زدن رو شمارش میکنه.
    امکانش هست؟؟

      1. سلام مجدد
        ممنون از پاسگویی تون
        میخواستم انتهای فرم ها یک فیلد اضافه کنم و داخلش یه سری شرایط و قوانیین رو بنویسم و فرد متقاضی مجبور بشه گزینه قوانین مطالعه کردم رو کلیک کنه تا بتونه گزینه ارسال فرم رو کلیک کنه..
        امکانش هست در این خصوص راهنمایی بفرمایید؟

        1. سلام
          کاری نداره شما از طریق فیلد html یا فیلدهای دیگه متن قوانین رو بنویسید.
          زیر یک چک باکس اضافه کنید و بنویسید قوانین را خوانده م و میپذیرم.
          بعدش به تنظیمات فرم برید و شرط بذارید تا زمانی که این تیک زده نشده بود امکان ثبت فرم وجود نداشته باشه.
          داخل تنظیمات هر فرم میشه شرط گذاشتم. فرم >> تنظمیات فرم

  11. سوال دیگه ای هم دارم
    من یک فرم برای ارسال مقالات برای همایش درست کردم که میخوام این امکان برای اون فرم باشه که افراد بتونن مثلا اطلاعات اولیه رو وارد کنن (مثلا مشخصات رو وارد بکنند و ذخیره بشه بعدا بیان مقالات رو اپلود بکنند) و بعدش با کد رهگیری که دارند یا همین روش Sticky List بروند مراحل رو کامل یا ویرایش بکنن. از روش Sticky List فعلا استفاده کردم و اون رو نصب کردم و کدش رو گذاشتم داخل یک برگه که اعضای سایت بروند و فرمشون رو ویرایش بکنند. تا اینجای کار مشکلی نیست . ولی 2 تا مشکل وجود داره 1: وقتی میزنم روی نمایش فرم فقط صفحه اول فرم نشون داده مشه و امکان زدن گزینه (یعدی) میسر نیست 2: وقتی گزینه ویرایش رو میزنم امکان رفتن به صفحات بعدی فرم هست ولی (یعنی کلیدش کار میکنه) ولی به دلیل اینکه میگه فیلد ها تکراری هستن این امکان رو هم میسر نیست(مثلا فیلد کد ملی )
    خیلی ممنون از این که وقت میزارید
    بنده شخصا از پاسخ گویی هاتون خیلی یاد گرفتم

    1. سلام مجدد
      خسته نباشید
      میدونم سرتون خیلی شلوغه
      ولی اگر امکانش هست به سوالم پاسخ بدید
      یه جورایی کار همایش گیر این سایت شده
      بازم شرمنده دوباره پست گذاشتم

  12. سلام
    من دوتا سوال پرسیدم از خدمتتون ولی گویا سوالات من حذف شدن .
    علتی داشت؟
    ممنون

  13. با سلام.
    ممنون از مطالب بسیار ارزشمند شما.
    سوالی از خدمتون داشتم.
    چطور میشه مثلا یک دراپ دان لیست ایجاد کرد و مقادیری توش قرار داد و با انتخاب هر کدوم از آیتم‌های اون دراپ دان لیست مقادیر مربوط به اون آیتم در المنت بعدی بایند بشن. مثلا با انتخاب استان از یک لیست شهرهای مربوط به اون در لیست بعدی نمایش داده بشن. یا با انتخاب یک رشته درسی دوره‌های مربوط به اون رشته در لیست نمایش داده بشن.

    آیا با این افزونه این کار امکان پذیر است؟ یا باید از افزونه دیگه ای استفاده کنیم؟؟

    ممنون از لطف شما بزرگوار.

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

    ID فیلدم که میخوام مقدارش نمایش داده بشه به فرض 36 هست

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

      1. ارزیابی پویا فقط نام یک پارامتر رو میگیره، اگه بخوام هوک بنویسم چطور میتونم به هر کدوم از انتخاب های دکمه رادیویی یک مقدار بدم؟

  16. سلام ممنون از توضیحات خوبتون

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

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

  18. سلام من الان دارم با افزونه GRAVITY STYLER کار می کنم منتهی یک قسمت دکمه موقع ویرایش هر چی تنظیم میکنمش باز رفرش می کنم همون حالت باقی می مونه….
    می تونید راهنماییم کنید یا سایتم رو چک کنید…
    سپاس

  19. سلام
    من با این کد موقعیت مکانی کاربرمو میگیرم

    var x = document.getElementById(“demo”);

    function getLocation() {
    if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition);
    } else {
    x.innerHTML = “Geolocation is not supported by this browser.”;
    }
    }

    function showPosition(position) {
    x.innerHTML = “Latitude: ” + position.coords.latitude +
    “Longitude: ” + position.coords.longitude;
    }

    حالا میخام مقادیر Latitude و Longitude رو در یک یا دو فیلد ذخیره کنم
    آیا این امکان وجود داره؟

  20. سلام ببخشید اینجا میپرسم نمیدونستم سوالم به کجا ربط داره
    ایا نمیشه کاری کرد که مثلا فیلد کد ملی بعد از نوشته شدن بلافاصله توسط سیستم چک بشه و بگه که ثبت نام شده یا نشده ؟ و نیازی به زدن دکمه ارسال برای نشون دادن خطا نباشه ؟

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

جدیدترین مقالات