首页 > 解决方案 > Laravel:使用 Create & Validate 方法从 Title 自动创建 Slug

问题描述

我想根据输入表单的标题自动创建一个 slug 并将其保存到数据库中。目前,这是我的控制器的设置方式:

  public function store(News $id) {
    News::create($this->validateArticle());
    return redirect('/news');
  }

  public function validateArticle() {
    return request()->validate([
      'title' => 'required',
      'excerpt' => 'nullable',
      'body' => 'nullable'
    ]);
  }

如何修改此代码,以便根据标题自动生成 slug?

谢谢。

标签: laravellaravel-6

解决方案


这是如何做到这一点的另一种选择。或者你可以像这样使用 Observer 来观察 crating 方法news->slug= Str::slug($request->title);

public function store(Request $request)
{
    $news= new News();
    $news->title= $request->title; 
    $news->slug= Str::slug($request->title);
    $news->excerpt= $request->excerpt;
    $news->body= $request->body;
    $news->save();
    return redirect('/news');
}

使用你 import Struse Illuminate\Support\Str;


推荐阅读