如何在 laravel 8 中动态添加/删除页面?
How to dynamically Add / Remove pages in laravel 8?
我是 Laravel 的新手。
我只是想创建一个网站,我想在其中动态添加和删除页面,还想在 route 中动态添加 slug。
这是我的数据库表的样子
页数
id
title
body
image
slug
我该怎么做?
提前致谢。
首先创建一个专用控制器
php artisan make:controller PageController
那么你需要一个路径来完成这个,例如在你的 routes/web.php
文件中
Route::get('pages/{slug}', 'PageController@show');
然后在你 PageController
中创建一个 show
方法,该方法将采用给定的 slug
class PageController extends Controller
{
public function show($slug)
{
$page = Page::where('slug', $slug)->firstOrFail();
return view('pages.show', ['page' => $page]);
}
}
要在 Page.php
模型中动态创建 slug,请定义一个 MUTATOR
class Page extends Model
{
/**
* Set slug before storing the page into database.
*
* @param $value
*/
public function setTitleAttribute($value): void
{
$this->attributes['slug'] = \Illuminate\Support\Str::slug($value);
$this->attributes['title'] = $value;
}
}
最后为您的页面创建 link 制作如下所示的锚标记
<a href="/pages/YOUR-PAGE-SLUG-TITLE">My cool link</a>
旁注
通过创建 MUTATOR,您无需在创建页面时设置 slug
例如
Page::create([
'title' => 'foobar',
'body' => 'foobar',
'image' => 'foobar',
// 'slug' => 'foobar', YOU DO NOT NEED TO SET SLUG EVER.
]);
我是 Laravel 的新手。 我只是想创建一个网站,我想在其中动态添加和删除页面,还想在 route 中动态添加 slug。
这是我的数据库表的样子
页数
id
title
body
image
slug
我该怎么做?
提前致谢。
首先创建一个专用控制器
php artisan make:controller PageController
那么你需要一个路径来完成这个,例如在你的 routes/web.php
文件中
Route::get('pages/{slug}', 'PageController@show');
然后在你 PageController
中创建一个 show
方法,该方法将采用给定的 slug
class PageController extends Controller
{
public function show($slug)
{
$page = Page::where('slug', $slug)->firstOrFail();
return view('pages.show', ['page' => $page]);
}
}
要在 Page.php
模型中动态创建 slug,请定义一个 MUTATOR
class Page extends Model
{
/**
* Set slug before storing the page into database.
*
* @param $value
*/
public function setTitleAttribute($value): void
{
$this->attributes['slug'] = \Illuminate\Support\Str::slug($value);
$this->attributes['title'] = $value;
}
}
最后为您的页面创建 link 制作如下所示的锚标记
<a href="/pages/YOUR-PAGE-SLUG-TITLE">My cool link</a>
旁注
通过创建 MUTATOR,您无需在创建页面时设置 slug
例如
Page::create([
'title' => 'foobar',
'body' => 'foobar',
'image' => 'foobar',
// 'slug' => 'foobar', YOU DO NOT NEED TO SET SLUG EVER.
]);