Изучаю сейчас Laravel, начал с 8 версии, во многих курсах все делают примитивные вещи, создают главную страницу и страницу постов. А как делать конкретные страницы по типу site.ru
/about/, не говорят.
Так вот вопрос, есть в базе таблица со страницами, у каждой страницы есть SLUG, при запросе в роутер передается SLUG далее в контроллере я проверяю по базе есть ли такая страница, если есть я вывожу, если нет отправляю на 404, это сделано для того чтобы я не писал руками в роуты каждый раз типа /about/, /about2/, /about3/ .... /about9999/.
Правильно ли я понял реализацию? Если нет подскажите как правильно...
web.php
Route::get('/{page:slug}', 'PageController@show')->name('page.single')->middleware('shortcode');
PageController.php
class PageController extends Controller
{
public function index()
{
$data = Page::with('layout')->where('slug', 'home-page')->firstOrFail();
$data->views += 1;
$data->update();
$data['thumbnail_url'] = $data->getImage();
return view(
"front.pages.{$data->layout->tpl}",
compact('data'));
}
public function show($slug)
{
if ($slug === 'home-page'){
return Redirect::route('home');
}
$data = Page::where('slug', $slug)->firstOrFail();
$data->views += 1;
$data->update();
return view(
"front.pages.{$data->layout->tpl}",
compact('data'));
}
}