مفاهیم اصلی
مستندات کامل و جامع یاراکد بلوط
1 یاراکد و انواع ورودی داده:
برگردیم به موضوع دو سوال پیش امد:
- چه کاری انجام بدهم که نام ستونها و فیلدهای فرم، به جای انگلیسی به فارسی نوشته شود
- چه جوری نوع یک ورودی را تغییر دهم مثلاً به جای متن ۵۰ تایی تبدیلش کنم به نوع عدد
انجام این کار به کمک یاراکد بلوط کار بسیار راحتی است کافیست در آرایه ورودی، نوع فیلد مد نظر را مشخص نماییم و برچسب فارسی آن را نیز بنویسیم مثل کد زیر که برای name یک آرایه به صورت انجمنی تعریف کردیم و مقدار تایپ (type) و مقدار برچسب (lbl) را به ورودی پاس میدهد.
class Ketab extends BASE{
public function __construct($conn){
$cols=[
"id"=>[],
"name"=>[
"type"=>"text100", // نوع ورودی را مشخص کردیم برای نام
"lbl"=>"نام کتاب" // برچسب فارسی را برای آن مشخص کردیم
],
"description"=>[],
"fi"=>[],
];
parent::__construct($conn,"ketab",$cols,"ketab");
}
}
?>
اگر تغییرات را ذخیره کنیم و صفحه ادمین سایت را دوباره باز کنیم می بینیم که تغییرات اعمال شده است مثل تصویر زیر که می بینید
همانطور که در تصویر میبینید و قسمتهای هایلایت شده داره نشان میدهد . نام ستون اول به نام کتاب تغییر کرده است ولی ستونهای دیگر همچنان به صورت انگلیسی باقی ماندهاند. همچنین حجم دادهای که نام کتاب میپذیرد برابر با ۱۰۰ کاراکتر و حجم دادهای که description میپذیرد برابر با ۵۰ کاراکتر شده است.
7.1 نوع داده یا فیلد جدول:
7.1.1 روش های ثبت نوع داده:
در ادامه انواع دادههای قابل استفاده در یارا کد بلوط را معرفی خواهم کرد برای استفاده از هر نوع به دو صورت می توان اقدام نمود مثلا در مثال بالا برای معرفی تایپ به صورت زیر اقدام شده است
"type"=>"text100",
می توان کد بالا را به کمک ثابت های تعریف شده یاراکد بلوط به صورت زیر باز تعریف نمود
"type" => self::TYPE_TEXT100,
که از این لحظه به بعد ما از روش دوم استفاده خواهیم کرد (چون تنبل هستم و نرم افزار vscode به صورت اتوماتیک انواع تایپ را بهم پیشنهاد می دهد)
خوب برای اینکه بدونید هر چه نوع داده هایی وجود دارد و هر کدام از این نوع ها چه کاری انجام می دهند می توانید منوی تست یاراکد بلوط را از نزدیک مشاهده کنید. بعدا در یک فصل کامل بعضی از مدلهای داده یاراکد بلوط را که شرایط خاصی دارند معرفی خواهم کرد.
7.1.3 برچسب فارسی برای ستون(فیلد) داده ها: “lbl”
خوب با type آشنا شدیم اما در کدهای کتابفروشی از یک lbl نیز استفاده شده:
lbl برای نمایش یک برچسب روی ستون داده است که صرفا درون فرم نمایش داده می شود و در هیچ کجا ذخیره نمی گردد. مثلا برای ستون name از عبارت زیر برای نام گذاری آن به فارسی استفاده کرده ایم
"lbl" => "نام کتاب"
7.1.4 ضروری کردن یک ستون (فیلد) داده: “require”
اگر قصد داشته باشیم که وارد کردن یک گزینه از فرم برای کاربران اجباری باشد کافی است که عبارت زیر را به آرایه آن اضافه نمایید.
"require"=>true,
چنانچه به جای true از false استفاده شود و یا اصلا نوشته نشود یاراکد بلوط ورودی را اختیاری در نظر می گیرد.
7.1.5 ثبت مقدار اولیه برای یک ستون (فیلد) داده: “val”
چنانچه قصد داشته باشیم که برای یک ستون یا فیلد داده از قبل مقداری مشخص کنیم کافیست عبارت زیر را با مقدار دلخواه خودمان، درون آرایه مربوط به ستون قرار دهیم.
"val"=>"کتاب",
در عبارت بالا به جای کلمه کتاب هر مقدار یا نوشتهای که مد نظر باشد میتوانید قرار دهید.
7.1.6 ثبت اطلاعات اضافی برای یک ستون (فیلد) داده: “list”
در بعضی موارد لازم است که اطلاعات اضافی را به ستون (فیلد) داده ارسال کنیم. مثلاً مینیموم یک عدد، ماکزیمم یک عدد، استپ یا پله های قابل پذیرش برای یک عدد و غیره. در مجموع برای ارسال هر نوع اطلاعات اضافی به ستون (فیلد) داده از لیست که به صورت آرایه هست استفاده می شود.
7.2 نوع عددی و اطلاعات کامل قابل ارسال:
به عنوان مثال در کتابفروشی می خواهیم قیمت قابل ثبت برای کتابها بیشتر از 10 هزار تومان و کمتر از 1 میلیون تومان باشد و فاصله بین دو قیمت متوالی 5 هزار تومان باشد پس برای fi باید به صورت زیر کد ها را باز نویسی کنیم البته ما برچسب و نوع آن را نیز بازنویسی کرده ایم
"fi" => ["type"=>"number","lbl"=>"قیمت به تومان","val"=>"10000","list"=>[10000,1000000,5000]],
در عبارت بالا list سه عضو دارد،
ورودی اول کمترین عدد قابل پذیرش،
ورودی دوم بیشترین عدد قابل پذیرش
و ورودی سوم فاصله بین دو قیمت
یعنی امکان ثبت قیمت 12000 تومان وجود ندارد یا 10 هزار و یا 15 هزار باید ثبت شود.
خوب تا الان با ساختار اصلی آرایه ورودی یاراکد بلوط آشنا شدیم برای ادامه کار ما آرایه ورودی کتابفروشی را کامل کرده و در زیر برای شما قرار میدهیم. کلا 15 خط کد نوشته شده است که در زیر آن را مشاهده می کنید.
class Ketab extends BASE
{
public function __construct($conn)
{
$cols = [
"id" => ["type" => self::TYPE_AUTOID, "lbl" => "ردیف"],
"name" => ["type" => self::TYPE_TEXT100, "lbl" => "نام کتاب", "require" => true, "val" => "کتاب"],
"description" => ["type" => self::TYPE_TEXT_RICH, "lbl" => "توضیحات", "require" => true],
"fi" => ["type" => self::TYPE_NUMBER, "lbl" => "قیمت به تومان", "val" => "10000", "list" => [10000, 1000000, 5000]],
];
parent::__construct($conn, "ketab", $cols, "ketab");
}
}
?>
7.2.1 معجزه 15 خط کد:
اما نتیجه حاصل از این 15 خط معجزه گونه است می توانید در تصویر زیر قسمت ادمین، سایت حاصل از این 15 خط را ببینید.
همنطور که در تصویر بالا مشاهده می کنید در قسمت توضیحات به راحتی می توان عکس و فیلم و تمامی امکانات html را بدون نیاز به کدنویسی های پیچیده به توضیحات مربوط به کتاب افزود
کف بر شدی! عجله نکن هنوز مونده! این فقط 15 خط بود هنوز دست به کد نشدیم که! فقط معرفی کردیم
7.3 بیاید با هم مرور کنیم :
- دیتابیس ساختیم
- اطلاعاتش رو در فایل serverInfo.php ذخیره کردیم
- از پوشه base کپی ایجاد کردیم و اسمش رو ketab گذاشتیم
- درون فایل 1admin_menu.php یک منوی مدیریت با نام کتابفروشی ساختیم
- یک فایل با نام ketab.php درون پوشه autoloads ساختیم و 15 خط کد توش نوشتیم
- پوسته سایت رو عوض کردیم و به خودمان دسترسی مدیریتی دادیم.
2 ساخت منو برای صفحه ادمین
خوب برای اینکه نتیجه کدهایی که نوشتید را ببینید (مثلا از رو دست من کپی نکردید و خودتون نوشتید) باید یک تغییر کوچولو در فایلی که در تصویر زیر مشخص کردم ایجاد کنیم برید فایل رو پیدا کنید و بازش کنید تا بگم چیکار باید کرد.
فایل بالا که هایلایت شده در مسیر زیر هست
yaracode_balout_v2/ themes/ketab/autoloads
جای یاراکد بلوط ورژن دو (yaracode_balout_v2) اسم پوشه روت سایت شما خواهد بود.
6.5.1 فایل 1admin_menu.php: مدیریت منوهای ادمین
این فایل درون پوشه autoloads قرار دارد (از پوشه های توی پوشه ketab بازش کنید کاری به base نداشته باشید) همون طور که از اسمش پیدا است منوهای صفحه ادمین توی این فایل قرار دارند. پس اگر بخواهیم یک منوی جدید به سایتمون اضافه کنیم که بتوانیم کتابهای فروشگاه رو مدیریت کنیم باید توی این فایل انجامش بدیم بریم ببینیم این فایل توش چی داره؟
6.5.2 آرایه ای که منوهای صفحه ادمین را نگه می دارد:
همون طور که می بینید یک آرایه با عنوان $adminMenus درونش قرار داره که ما به قسمتی که تست یاراکد بلوط توش نوشته شده یکی دیگه اضافه می کنیم شما هم اضافه کنید. تصویر چیزی که اضافه کردم رو در ادامه می بینید
برای اینکه دستتون درد نگیره نسخه تایپیش رو هم براتون اینجا گذاشتم
["name" => "ketab", "label" => " کتابفروشی"],
6.5.3 اجزای منوی ادمین:
- Name = نام کلاس
- Label = برچسب فارسی منو
این آرایه یک قسمت name دارد که باید مقدار آن با نام کلاسی که ساختیم یکی باشد و یک قسمت label دارد که هرچه می خواهد دلت تنگت بنویس من نوشتم کتابفروشی البته یه آیکون کتاب هم به کمک براش ساختم.
بعدا یک بخش هم در مورد ایکونها براتون آموزش خواهم داشت.
خوبه دیگه کد نویسی بسه باید بریم سراغ صفحه ادمین سایت، اما متاسفانه وقتی می ریم سراغ صفحه ادمین با کمال تعجب می بینیم که هیچ اثری از منویی که ساختیم نیست، نگران نباشید و نا امید نشید!
6.6 دو اقدام مهم تا دیدن نتیجه:
- تغییر پوسته فعال
- افزودن مجوز برای کاربر
دوتا کار کوچولو بدون کدنویسی و تنها با موس باید انجام بدهید اول باید پوسته سایت رو عوض کنید از base تبدیلش کنید به ketab و دوم باید مجوز دسترسی به منوی کتابفروشی را برای خودتان فعال کنید. به همین راحتی
راحت نیست؟ اشکال نداره با تصویر بهت نشون می دهم چطوری
6.6.1 تغییر پوسته سایت:
وارد ادمین سایت بشید و از منوی تنظیمات، زیر منوی اطلاعات عمومی را انتخاب کنید مثل تصویر زیر
حالا از فرم نمایش داده شده، از قسمت پوسته فعال آدرس پوسته ketab را انتخاب کنید و دکمه ذخیره را در پایین صفحه کلیک کنید. در تصویر زیر پوسته فعال هایلایت شده
6.6.2 احتمال خطا هنکام ذخیره:
ممکنه هنگامی که اولین بار است وارد این منو می شوید و قصد ذخیره اطلاعات را دارید، سیستم از شما خطا بگیرد، باید اجزای فرم را ببینید احتمالا نام سایت را از شما می خواهد من به فارسی برایش نوشتم یاراکد بلوط و دوباره ذخیره را زدم مشکل حل شد.
6.6.3 شرط مهم برای کد نویسی و تست آنها:
توجه باید حالت عیب یابی روی وضعیت روشن باشد وگرنه! جداول به صورت اتوماتیک ساخته نمی شوند
خوب یکی از دو کار رو با هم انجام دادیم.
6.6.4 افزودن مجوز برای کاربر:
اما کار دوم: ایجاد مجوز دسترسی به منوی کتاب هست برای خودمان.
باید منوی کاربران را انتخاب کنید و اسم خودتان را پیدا کنید و با کلیک روی اسم خودتان آن را آماده ویرایش نمایید حالا من فقط یک کاربر دارم که خودم هستم
روی قسمت هایلایت شده کلیک کنید تا آماده ویرایش شود بعد از باز شدن فرم برای ویرایش به پایین صفحه اسکرول کنید تا به قسمت مجوزها برسید با کلیک در قسمت مجوز ها، منو مطابق شکل زیر باز می شود. باید کتابفروشی را انتخاب نمایید.
بعد از انتخاب کتاب فروشی دکمه ذخیره را بزنید و منتظر پیغام ویرایش با موفقیت انجام شد بمانید. به محض دریافت پیغام موفقیت عملیات، صفحه را تازه سازی(رفرش) کنید یا یکی از منوها را انتخاب کنید و اینجا است که منوی کتابفروشی نمایان می شود.
در زیر تصویر منوی کتاب فروشی را می بینید که من آن را انتخاب کرده ام و قصد کرده ام که اطلاعات اولین کتاب را ثبت کنم. بعد از انتخاب منوی کتابفروشی سربرگ هایلایت شده را انتخاب کنید تا امکان ثبت یک کتاب برای شما فراهم گردد.
6.7 کار یک هفته ای را در یک دقیقه انجام دهید:
وای خدای من! نه تنها دیتابیس و جدول و ستونها ساخته شده بلکه یک فرم برای ثبت اطلاعات، ویرایش، کپی و حذف آنها یک فرم برای جستجو و ... نیز همزمان آماده شده است!
اگر خوابم بیدارم کنید! برای ساخت همچین کاری برای هر جدول از دیتابیس حداقل یک هفته وقت صرف می شد.
اما همان طور که در تصویر قبل می بینید الان بین قیمت و توضیحات که قطعا متن بلندی نیاز دارد، تفاوتی وجود ندارد. همچنین در قسمت قیمت نباید امکان ثبت نوشته وجود داشته باشه که متاسفانه وجود دارد و برای نام هم بیش از 50 کارکتر نمی توان استفاده کرد. برای حل این معضلات شما باید یاراکد بلوط را بشناسید
خوب از اینجا به بعد شما به دنیای کدنویسی یاراکد بلوط وارد می شوید
سلام بر یاراکد بلوط
سلام کنید به یاراکد چرا که آنچه تا الان آموختید مقدمات امر بود از این جا به بعد هست که تازه می توانید قدرت یاراکد بلوط را دریابید و شگفتی ها در پیش دارید.
این کد ها حاصل 7 سال تلاش و عیب یابی هستند که با نام یاراکد بلوط و به نیت نذر سلامتی امام زمان (که خدا ظهورش را نزدیک گرداند) به رایگان در اختیار عموم قرار داده ام، شما نیز در نشر آن شریک باشید تا در ثواب آن شریک باشید.
3 آرایه ورودی یاراکد بلوط و ساخت فیلدهای جداول دیتابیس
6.4.1 اولین عنصر: ردیف برای جدول
یادت باشه اولین عضو آرایه همیشه به عنوان ستون خودافزایشی (ردیف) در نظر گرفته می شود پس بهتره اولین عضو اسمش id باشه و بقیه را هم در ادامه بنویسی.
البته این قانون که همیشه اولین عضو id هست رو به راحتی می شود تغییر داد (بعدا که نوع های داده را شناختید، با ثبت یک گزینه به عنوان autoId می توانید هر عنصر دیگه ای را تبدیل به id جدول کنید)
6.4.2 ساخت فیلدهای جدول دیتابیس:
مثلا من برای کتابفروشی می خواهم یک جدولی در دیتابیس داشته باشم که اطلاعات زیر را در خودش نگه دارد
الف- ردیف id ب- نام کتاب name ج- بارکد barcode د- توضیحات description ه- قیمت fi
خوب بریم سراغ کدها بعد از کلی تلاش کدهامون به صورت زیر در آمده است.
class Ketab extends BASE{
public function __construct($conn){
$cols=[
"id",
"name",
"description",
"fi",
];
parent::__construct($conn,"ketab",$cols,"ketab");
}
}
?>
فهمیدین چی شد!
خدای من! وای وای ببین، شما فقط یک آرایه نوشتید ولی همزمان در دیتابیس همه چیز ایجاد شد،
صبر کنید! صبر کنید! هنوز هیجانش مونده!