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

سلام .

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

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

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

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

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

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

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

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

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

dynamic

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

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

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

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

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

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

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

 

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

[gravity-form id=1 title="true" description="true" ajax="true" field_values='parameter_name1=value1&parameter_name2=value2']

تو شورت کد بالا بجای عدد 1 باید آیدی فرم رو وارد کنید بجای parameter_name های 1 و 2 هم باید نام پارامتر های فیلدهای 1 و 2 رو وارد کنید و به جای value 1و 2 نیز مقادیر پیشفرضی که برای این فیلدها مد نظر دارید رو .
در ضمن ، تو شورت کد بالا اون gravity-form رو هم به gravityform تغییر بدید … چون اگه اون خط فاصله – رو نمیذاشتم بجای شورت کد بالا خود فرم رو توی این پست نشون میداد :دی

 

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

add_filter('gform_field_value_your_parameter', 'my_custom_population_function');
function my_custom_population_function($value){
    return 'hannan';
}

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

حنان ابراهیمی ستوده

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

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

48 نظر

  1. ehsan

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

    پاسخ
      1. ehsan

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

        پاسخ
        1. حنان ابراهیمی ستوده
          حنان ابراهیمی ستوده

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

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

          https://gravityforms.ir/category/learning/page/2/

          پاسخ
      2. ehsan

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

        پاسخ
        1. حنان ابراهیمی ستوده
          حنان ابراهیمی ستوده

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

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

          پاسخ
  2. مجتبی مویدی

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

    پاسخ
    1. حنان ابراهیمی ستوده
      حنان ابراهیمی ستوده

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

      پاسخ
  3. فرهاد

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

    پاسخ
      1. فرهاد

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

        پاسخ
  4. فرهاد

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

    پاسخ
    1. حنان ابراهیمی ستوده
      حنان ابراهیمی ستوده

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

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

      پاسخ
  5. فربد

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

    پاسخ
    1. حنان ابراهیمی ستوده
      حنان ابراهیمی ستوده

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

      پاسخ
  6. MorteZah

    سلام آقای ستوده
    و ممنون از آموزش خوبتون 🙂

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

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

    پاسخ
      1. MorteZah

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

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

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

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

        پاسخ
  7. مصطفی

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

    پاسخ
      1. مصطفی

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

        پاسخ
        1. حنان ابراهیمی ستوده
          حنان ابراهیمی ستوده

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

          پاسخ
  8. مصطفی

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

    پاسخ
    1. مصطفی

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

      پاسخ

نظری بگذارید

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