میتونی یکی رو post و دیگری رو get قرار بدی ولی به نظرم کار درستی نیست اگر میخوای یک روت با دوشرط متفاوت در کنترلرت->متدت بساز.
راه اول جدا از نادرست بودنش شدنی نیست جفتش باید get باشه. در رابطه با شرط هم بهش فکرکردم ولی چیزی نیست که بخوام روش شرط بزارم.
درکل قضیه اینطوریه که میخوام route به این شکل باشه مثلا: countries/foods/aaa که اولی دسته بندی هست دومی زیر دسته و در آخر هم slug پست مربوط به این زیردسته. با این حالت مشکلی ندارم مشکل جاییه که خود دسته اصلی یعنی countries میتونه پست داشته باشه پس route باید به این شکل باشه مثلا: countries/aaa
نمیدونم متوجه منظورت شدم یا خیر
ببین برای مورد اولت که اسلاگ داره میتونی این شکلی بنویسی
Route::get('/{countries}/{foods}/{slug}', 'CategoryController@index');
و برای پست های اون دسته
Route::get('/{countries}/{slug}', 'CategoryController@post');
تست نکردم این کدها رو میتونی تست کنی
این درست ولی یه حالت دیگه هم هست: countries/foods که نمایش پست های زیردسته میشه
اگر بخوام اینو بزارم با countries/slug که نوشتی به مشکل میخورم. که دقیقا مشکلم همینه. هر دو route رو میخوام
ممنون از پاسخت
راهی که آقای @juza66 گفتند کاملا صحیحه.
و من همون راه رو یکم تغییر میدم که شما متوجه بشید منظورشون چیه.
از آپشنال پارامتر استفاده کنید: (Optional Parameters
Route::get('/countries/{foods?}/{slug}?', 'CategoryController@index');
و در کنترلر میتونید چک کنید فرضا اگه slug ست نشده بود، پست های همون رو نشون بدید. برای این کار یه دیفالت ولیو نال میدید داخل کنترلرتون:
public function index($foods = null, $slug = null)
{
if (!$foods) {
// show country posts
}
if (!$slug) {
// show sub posts
}
// do other stuff
}
مشکل اکثر دوره های ویدیویی همینه، باعث میشه شما به شدت از داکیومنت فاصله بگیرید.
پیشنهاد میکنم حداقل 4 سکشن اول هر بخش داکیومنت لاراول رو بخونید؛ چیزای مهمی داخلشون گفته شده.
@proamirm ممون از شما
در رابطه با داکیومنت قبل از اینکه اینجا سوالی مطرح کنم به اندازه ی سوادم هم جستجو میکنم هم داکیومنتو میخونم که وقت دوستان گرفته نشه. اگر سوالم توی داکیومنت بوده بزارید به پای کم تجربگی و کم سوادی بنده ولی در رابطه با سوالم فکرکنم من بد توضیح دادم سعی میکنم واضح تر بنویسم.
ببینید من یه route دارم که به این شکل هست: countries/foods که پست های مربوط به زیردسته ی foods رو نمایش میده و یک route دیگه دارم که به این شکل هست: countries/{slug} که صفحه جزییات پست مربوط به دسته بندی countries رو نمایش میده.
میخوام ببینم چطوری میشه این ۲تا رو از هم تفکیک کرد. اگر باز جایی شو متوجه نشدید بفرمایید بیشتر توضیح بدم
بله متوجه شدم چی میخواید.
ببینید روت های لاراول به ترتیب پردازش میشه. از بالا به پایین دونه دونه چک میکنه، اولین روتی که مچ بشه با آدرس، کنترلر صدا زده میشه.
Route::get('countries/foods', function () {
return "Oh ok, you want to check Foods.";
});
Route::get('countries/{slug}', function ($slug) {
return "Do you asked about {$slug} ?";
});
نتیجه به این شکله:
میبینید که foods جدا پردازش شده، و باقی به روت دوم میرن تا پردازش بشن
خب اگر من پستی داشته باشم که slug واژه foods باشه هم باز این جدا پردازش میشه؟!
نکته ی دیگه ای که هست اینکه مسیر countries/foods هم استاتیک نیست و به شکل داینامیک ساخته میشه یعنی از طریق همون countries/{slug}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟