如何在 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.
]);