عطا نعمانی
3 سال پیش توسط عطا نعمانی مطرح شد
5 پاسخ

تداخل آدرس‌ های مدل Page با بعضی از Route ها

سلام و خسته نباشید خدمت همه دوستان عزیز
من یه مدل ایجاد کردم به اسم Page برای ایجاد کردن برگه‌های یکتا ( مثل درباره ما و تماس با ما و ... )
و اینکه روتی که برای frontend اون ایجاد کردم به این شکل هستش :

Route::get( '/{pageSlug}', 'PageController@single' )->name('single.page');

و طبیعیه که slug برگه ها به همراه یک / درست بعد از دامنه اصلی آدرس دهی میشن! ( مثل : domain.com/about-us )
براش یه view هم در نظر گرفتم که برگه‌های ایجاد شده و ذخیره شده در دیتابیس توسط اون نشون داده بشن.
حالا مشکل اینجاست که وقتی صفحاتی مثل admin یا cart یا profile رو هم که دقیقا به شیوه روت بالا هستند میزنم به view خودشون نمیرن و از view که در بالا عرض کردم استفاده می کنند.
حالا می‌خوام ببینم چطوری میشه بعضی از کلمات مثل همین admin و ... رو از اون روت بالا exclude کرد.


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش آپدیت شد
1

تا جایی که متوجه منظورتون شدم برای حل این مسئله تون کافیه مسیرهای مستقیمتون مثل admin و cart و profile رو قبل از wildcard تون قرار بدید. همین!

Route::get( '/admin', 'MainController@admin' )->name('admin');
Route::get( '/cart', 'MainController@cart' )->name('cart');
Route::get( '/profile', 'MainController@profile' )->name('profile');
Route::get( '/{pageSlug}', 'PageController@single' )->name('single.page');

اینجوری روترتون URL درخواستی رو از بالا چک میکنه و پایین میاد. اگر در مسیرش با هر یک از موارد مستقیم مواجه شد که به مقصد تعریف شده هدایتش می‌کنه. اگر هیچ یک از موارد بالا نبود میاد سراغ pageSlug.


Saman
تخصص : برنامه نویس وب
@samanzdev 3 سال پیش مطرح شد
0

با عرض سلام و احترام
شما می تونید قبل از slug تون عبارت admin رو بنویسید، به این شکل به نظرم به مشکل نمی خورید.
البته شما باید برای route های ادمین باید یک route group تعریف کنید.
موفق باشید.
@halftone


عطا نعمانی
تخصص : برنامه نویس PHP / Laravel
@jehat 3 سال پیش مطرح شد
0

@samanzdev درود دوست گرامی ممنون از توجهتون
فکر کنم منظور بنده رو درست متوجه نشدید چون بنده route های پنل مدیریت رو کلا در یک فایل جداگانه قرار دادم و این route هم که جزو route های frontned هستش داخل یه فایل جداست. منتهای مراتب چون شیوه آدرس دهی domain.com/admin مثل شیوه آدرس دهی مدل تعریف شده من برای برگه ها هستش مثل : domain.com/about-us به همین خاطر لاراول اون admin رو هم یکی از slug های مدل من در نظر میگیره و به controller اشتباه و view اشتباه پاس میده


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش آپدیت شد
1

تا جایی که متوجه منظورتون شدم برای حل این مسئله تون کافیه مسیرهای مستقیمتون مثل admin و cart و profile رو قبل از wildcard تون قرار بدید. همین!

Route::get( '/admin', 'MainController@admin' )->name('admin');
Route::get( '/cart', 'MainController@cart' )->name('cart');
Route::get( '/profile', 'MainController@profile' )->name('profile');
Route::get( '/{pageSlug}', 'PageController@single' )->name('single.page');

اینجوری روترتون URL درخواستی رو از بالا چک میکنه و پایین میاد. اگر در مسیرش با هر یک از موارد مستقیم مواجه شد که به مقصد تعریف شده هدایتش می‌کنه. اگر هیچ یک از موارد بالا نبود میاد سراغ pageSlug.


عطا نعمانی
تخصص : برنامه نویس PHP / Laravel
@jehat 3 سال پیش مطرح شد
0

سلام آقای @mhyeganeh عزیز
از لطف و توجه شما سپاسگزارم مشکلم حل شد 🙏


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
1

@halftone
موفق و پیروز باشید.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام