راهنما و مستندات محصول فرم ساز پیشرفته RSForm Pro

مشاهده و خرید محصول

موضوع: نمایش یک مقدار پیشفرض داینامیک در فیلد هنگام نمایش فرم

تاریخ ایجاد : 1398/04/23

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

 نمونه مثال امروز :

 فرض کنید ما یک فرم کاملا ساده به شکل زیر ایجاد کرده ایم :

 

 حال فرض کنید می خواهیم کاری کنیم که اگر کاربر لاگین بود ، ایمیل کاربر را در فیلد ایمیل بصورت خودکار نمایش دهد تا کاربر نیاز نباشد این فیلد را مجددا پر کند.

 وارد ویرایش فرم مربوطه در بخش مدیریت شوید

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

 

 حال در پنجره باز شده روی تب "اصلی" ، به دنبال فیلد "مقدار پیشفرض" میگردیم :

 

 در باکس روبروی "مقدار پیشفرض" تیکه کد زیر را قرار دهید :

    //<code>
    $user = JFactory::getUser();
    return $user->get('email');
    //</code>
نکته :
در ابتدا و اتنهای تیکه کد بالا عبارت // code وجود دارد که نباید حذف شوند.

در ادامه نکته بالا باید عرض کنم که در واقع ما داریم با عبارت code که در ابتدا و انتها وجود دارد به RSForm می فهمانیم که ما بین این 2 عبارت یک کد PHP وجود دارد که باید بصورت PHP با ان رفتار شود.

 در خط اول عبارت $user = JFactory::getUser(); را داریم که داره از پلتفرم جوملا ، تابع getUser رو فراخوانی می کنه

 در خط بعدش عبارت return $user->get('email'); را داریم که داره ایمیل کاربر لاگین شده رو درخواست می کنه و با return اون رو بر میگردونه؛ در واقع باید مقداری که می خواهیم درون فیلد قرار گیرد را با عبارت return مشخص کنیم.

 اگر تغییرات را ذخیره کنیم و نگاه دوباره ای به فرم بندازیم می بینیم که فیلد ایمیل شبیه به زیر تغییر می کند که به معنای تغییرات PHP می باشد که داده ایم :

 

 حال وارد وب سایت می شویم ، سپس لاگین می کنیم تا تغییرات داده شده را ببینیم :

 

 طبق تصویر بالا می بینیم که تیکه کد ما به درستی در حال کار کردن می باشد و ایمیل ثبت نام شده کاربر در فیلد ایمیل بصورت خودکار نوشته شده است.

 یک سری از مثال های ساده جهت آشنایی بیشتر

 مثال شماره 1 :

$user_id = $user->get('id'); // شناسه کاربر
$username = $user->get('username'); // نام کاربری کاربر
$name = $user->get('name'); // نام کامل کاربر
$email = $user->get('email'); // ایمیل کاربر

 مثال شماره 2 :

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

//<code>
$user = JFactory::getUser();
$profile = JUserHelper::getProfile($user->id);
return $profile->profile['region'];
//</code>

 متغیر $profile حاوی اطلاعات پروفایل کاربر لاگین شده می باشد که با روش $profile->profile['region'] می توان به تک به تک مقدارهای آن دسترسی پیدا کرد (مثلا در مثال بالا در حال دریافت منطقه زمانی کاربر "region" می باشد)

 برای دریافت بقیه فیلد های profile می تونید وارد جدول #__user_profiles بشید و اسم ستون مورد نظر رو اینجا بنویسید.

 مثال شماره 3 :

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

 برای اجرای این روش باید به زبان SQL و PHP توسط کامل داشته باشید

//<code>
$db = JFactory::getDbo();
$db->setQuery("SELECT `column_name` FROM `#__table_name` WHERE `a_column`='value' LIMIT 1");
return $db->loadResult();
//</code>

 در مثال بالا کدی نوشتیم که مثلا ستون column_name رو از جدول #__table_name به شرطی که ستون a_column برابر با value باشد بگیرد و در خروجی return کند

 کاملا مشخص است که شما باید نام جدول ، ستون انتخابی و ستون شرط گذاری شده را برای خود تغییر دهید تا به درستی کار کند (جهت یک تست واقعی می تونید از جدول #__content استفاده کنید)

با این ترفند شما می تونید با کمی آشنایی به PHP ، هر بلایی که سر فرم تون خواستید بیارید و به نظرم خیلی می تونه کاربردی و جذاب باشه که بدون دست بردن به هسته بتونید همچین تغییرات بزرگی رو ایجاد کنید.