نشان دادن تمام منوها و زیر منوها از دیتابیس در لاراول

در نظر بگیرین یه CMS نوشتین یا به هر دلیل منو و زیر منوهاتونو در دیتابیس ذخیره میکنین تا بهتر مدیریت کنین.

حالا وقتی بخواین اونارو لیست کنین با مشکلاتی مواجه میشین از جمله:

  • استفاده از قطعه کدی که چندین بار Query Builder رو صدا کنه
  • یه Foreach که نمیتونه عمق منو رو تشخیص بده
  • کلی حلقه و شرط اضافی
  • و…

من برای حل این مسئله میخوام یه راه حل بدم

X Menu

https://github.com/Unmd0/X_menu
https://github.com/Unmd0/X_menu

اول برین اینجا و پروژه رو Clone یا Download کنین

برین تو دایرکتوری لاراولتون و فایل xmenu.blade.php رو در « میخواد/دلتون/هرجا/views » قرار بدین

حالا برین هرجا که میخواین منوهاتون رو لیست کنین (حتما باید در یک فایل blade.php. باشین) و فایل xmenu.blade.php رو include کنین

1@include('Address.to.xmenu')

حالا که فایل xmenu.blade.php رو در دل قطعه کدهاتون قرار دادین در خط بعدش باید یه function رو صدا کنین

123@php 
xmenu ( 0 , 'Category Table' , 'Column of Category name' , 'Column of Category id' );
@endphp

مقادیری که به این فانکشن باید بفرستین رو به ترتیب توضیح میدم:

برای شما
  • شماره ی اولین پدر (هر منو یه شماره پدر داره که در واقع نشون دهنده ی این است که هر منو زیر منو کدام آیتم هستش)
  • نام جدول (جدولی که منوهای شما داخلش هستن)
  • نام ردیفی که نام منوهاتون در اون جاداره
  • نام ردیفی که نشان دهنده ی شماره منو پدر هستش (اگر هنوز “شماره پدر” شمارو گُنگ کرده پایین تر یه نمونه دیتابیس نشون میدم که از این حال در بیاین )
123456789107- محصولات        |
--------------------------------------------------------------
                          ||   10- محصول (8)        |
8- درج (7)           ||---------------------------------- 
                          ||   11-تنوع (8)              |
______________________________________
                         ||   12-محصول (9)          |
9- ویرایش (7)     ||-----------------------------------
                         ||   13-تنوع (9)               |
______________________________________

عددهایی که در پرانتز ها میبینید شماره پدر هستند و نشون میده هر منو باید زیر کدوم منو باشه (توجه کنید که پدر اصلی و اولین پدر برابر با صفر میباشد)

الان با توجه به این نمونه دیتابیس (نام جدول category میباشد) باید فانکشن رو مثل کد زیر صدا کنیم

123@php
xmenu(0,'category','cname','pid');
@endphp

یه مسئله دیگه میمونه

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

خب میتونین برین تو فایل xmenu.blade.php و قطعه کد زیر رو پیدا کنید و اسم class خودتون رو بزارین

1$class="header__menu__dropdown"

و تمام.

تمام تلاشمو کردم ساده و کامل توضیح بدم.

فایل xmenu.blade.php توسط بنده توسعه پیدا کرده و همچنان در حال توسعه و بهتر شدن میباشد.

آیا شما روش بهتری برای معرفی میشناسید؟

لطفا نظرات خودتون رو بهم بگین.

نویسنده مطلب: UNMD0

منبع مطلب

به فکر سرمایه‌گذاری هستی؟

با هر سطحی از دانش در سریع‌ترین زمان با آموزش گام به گام، سرمایه گذاری را تجربه کن. همین الان میتونی با لینک زیر ثبت نام کنی و ۱۰ درصد تخفیف در کارمزد معاملاتی داشته باشی

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

آدرس ایمیل شما منتشر نخواهد شد.