Благодаря этому ниже код URL выглядит следующим образом: /downloadpage/34
Я хочу сделать URL оптимизированным для SEO, например: /downloadpage/slug
В таблице ‘media’ есть столбец slug
, Как изменить в этом коде, что медиа ищет по идентификатору, но в URL он показывает слаг?
Файл rout.php:
Route::get('/downloadpage/{id}', [
'as' => 'downloadpage', 'uses' => 'DownloadController@index'
Файл DownloadController.php:
public function index($id){
$images = DB::table('media')->where("id", "=", $id)->get();
$popular = DB::table('media')->orderBy('count_download', 'DESC')->take(5)->get();
$mostlike = DB::table('media')->orderBy('count_like', 'DESC')->take(5)->get();
$alsolike = DB::table('media')->orderByRaw("RAND()")->where("id", "!=", $id)->take(3)->get();
$settings = Setting::first();
$previous = DB::table('media')->where('id', '<', $id)->max('id');
$next = DB::table('media')->where('id', '>', $id)->min('id');
$imgshare = DB::table('media')->where("id", "=", $id)->first();
return view('download.downloadpage', ['images'=>$images , 'popular'=>$popular, 'mostlike'=>$mostlike, 'alsolike'=>$alsolike, 'settings'=>$settings, 'previous'=>$previous, 'next'=>$next, 'imgshare'=>$imgshare]);
}
Что-то вроде того.
Маршрут:
Route::get('/downloadpage/{slug}', [
'as' => 'downloadpage', 'uses' => 'DownloadController@index'
контроллер:
public function index($slug){
$images = DB::table('media')->where("slug", "=", $slug)->first();
$popular = DB::table('media')->orderBy('count_download', 'DESC')->take(5)->get();
$mostlike = DB::table('media')->orderBy('count_like', 'DESC')->take(5)->get();
$alsolike = DB::table('media')->orderByRaw("RAND()")->where("id", "!=", $id)->take(3)->get();
$settings = Setting::first();
$previous = DB::table('media')->where('id', '<', $images->id)->max('id');
$next = DB::table('media')->where('id', '>', $images->id)->min('id');
return view('download.downloadpage', ['images'=>$images , 'popular'=>$popular, 'mostlike'=>$mostlike, 'alsolike'=>$alsolike, 'settings'=>$settings, 'previous'=>$previous, 'next'=>$next, 'imgshare'=>$images]);
}
Я изменил $images = DB::table()...->first()
строка до конца ->first()
, так что вы не получите массив. Вам, вероятно, нужно будет что-то изменить в представлении.
Я настоятельно рекомендую ознакомиться с базовой документацией Laravel для маршрутизация, что объясняет это ясно. И переживает красноречивый документация и преобразование вашего DB
звонки на модели.
Других решений пока нет …