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

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

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

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

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

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


ثبت پرسش جدید
فخرالدین لنگی
تخصص : برنامه نویس وب، آندروید و سیست...
@fakhraddin 3 سال پیش مطرح شد
0

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


علی کوندری
@alikavandary.77 3 سال پیش مطرح شد
0

@fakhraddin

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


فخرالدین لنگی
تخصص : برنامه نویس وب، آندروید و سیست...
@fakhraddin 3 سال پیش مطرح شد
0

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

  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. در نهایت یا توی روت یا سازنده کنترلرمون از میدلور استفاده می کنیم

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

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