ویرگول
ورودثبت نام
UNMD0
UNMD0Full Stack Developer
UNMD0
UNMD0
خواندن ۳ دقیقه·۶ سال پیش

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

در نظر بگیرین یه 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 کنین

@include('Address.to.xmenu')

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

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

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

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

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

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

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

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

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

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

$class="header__menu__dropdown"

و تمام.

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

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

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

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

laravelبرنامه نویسیلاراولgithubphp
۴
۱
UNMD0
UNMD0
Full Stack Developer
روزمرگی های کُدِر گایز
روزمرگی های کُدِر گایز
اینجا جاییه که ما برنامه نویس ها درباره ی خودمون و علاقمندی هامون میگیم. coderlife.ir
شاید از این پست‌ها خوشتان بیاید