حمیدرضا
2 سال پیش توسط حمیدرضا مطرح شد
1 پاسخ

تغییر پارامتر در روتینگ لاراول

سلام خدمت دوستان عزیز، من توی پروژه ی خودم یه صفحه برای بلاگ دارم و برای نمایش پست هام slug مدل post رو از id به title تغییر دادم.
مشکل اینجاست که چون پارامتر title به صورت get ارسال میشه و به url اضافه میشه بینش فاصله میخوره و مرورگر اون فاصله ها رو با %20 جایگزین میکنه و url بسیار ناخوانا میشه پس من اومدم زمانی که دیتا رو به روتر پاس دادم با استفاده از تابع str_replace کارکتر فاصله رو با - جایگزین کردم.
مشکل من اینه که چون title تغییر پیدا کرده لاراول نمیتونه پست مورد نظر رو پیدا کنه و به کاربر نشون بده برای همین ارور 404 میده.
سوال من اینه که چطور میتونم مقدار یه پارامتر رو داخل روتر لاراول قبل از اینکه به کنترلر ارسال بشه تغییر بدم؟

لینک نمایش پست:

<a href="{{ route('showPost', str_replace(' ','-', $post->title)) }}">نمایش</a>

روتر لاراول:

Route::get('/بلاگ/{post}', 'App\Http\Controllers\PostController@showPost')->name('showPost')

کنترلر:

public function showPost(Request $request, Post $post){...}

میدونم که باید داخل روتر قبل از اینکه پارامتر post رو به کنترلر ارسال کنم کاراکتر های فاصله ی اون رو با - به وسیله ی تابع str_replace جایگزین کنم، اما نمیدونم چطور باید این کار رو انجام داد.


ثبت پرسش جدید
مهدی سعدونی
تخصص : برنامه نویس وب
@mehdisadooni 2 سال پیش مطرح شد
2

می تونی از پکیج cviebrock/eloquent-sluggable استفاده کنی برای هندل کردن slug ها

https://github.com/cviebrock/eloquent-sluggable


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

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