راکت

مشکل ادرس و اسلاگ در لاراول

3 پاسخ

سلام و وقت بخیر
من یک مشکلی داره سایتم اینه که تو قسمت ادرس بار اگر قسمتی از ادرس رو پاک کنیم صفحه باز میشه و من نمیخوام اینطوری باشه
مثلا
ادرس اصلی http://site.ir/product-a-b-c-d

ادرس دوم http://site.ir/product-b-d

با ادرس دوم هم باز میشه

ممنون میشم راهنمایی کنید

ثبت پرسش جدید

پاسخ‌ها

3
فخرالدین لنگی
فخرالدین لنگی
@fakhraddin

تخصص: برنامه نویس وب، آندروید و سیستم های کامپیوتری

سلام و وقت بخیر
برای این کار شما می تونید از میدلویر ها استفاده کنید که توی میدلویر اسلاگتون رو چک کنه اگر معتبر بود وارد بشه در غیر اینصورت به آدرس خاصی که مدنظرتون هدایت بشه در واقع کار میدلویر علاوه بر چک کردن یک سری ورودی ها یا شروطه چک کردن پارامتر های url هم می شه انجام داد

علی کوندری
علی کوندری
@alikavandary.77

@fakhraddin

ممنون میشم یه نمونه مثال بزنید یا معرفی کنید

شاید پاسخ شما همین‌جا باشد

فخرالدین لنگی
فخرالدین لنگی
@fakhraddin

تخصص: برنامه نویس وب، آندروید و سیستم های کامپیوتری

برای ساخت چنین میدویری من مراحل رو به ترتیب براتون توضیح می دم هر قسمتی گنگ بود بفرمایید تا بیشتر توضیح بدم

  1. ابتدا یک میدلویر با دستور php artisn make:middleware CheckSlugMiddleware می سازیم
  2. بعد از ساخت میدلویر قاعدتا slug های شما توی جدولی از دیتابیسی ذخیره شدن ما فرض می کنیم این جدول اسمش articles و اسم ستون اسلاگ هم slug در نظر می گیریم کافیه یک کوئری زده بشه تا چک بشه که این اسلاگ وجود داره یا خیر به صورت زیر:

    public function handle($request, Closure $next){
    $slug = substr($request->getUri(), strlen(env('APP_URL')) + 1);
    
    try{
        Article::where('slug', $slug)->firstOrFail();
        return $next($request);
    }
    catch(\Exception $ex){}
    
    abort(404);
    }

    توی شبه کد بالا اگه اسلاگ وجود داشته باشه صفحه لود می شه در غیر اینصورت صفحه 404 نشون می ده

  3. بعد از تکمیل کد میدلیور اون رو توی فایل Kernel.php ریجستر می کنیم
  4. در نهایت یا توی روت یا سازنده کنترلرمون از میدلور استفاده می کنیم

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

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