- Strクラスを使用する方法: LaravelのStrクラスには、文字列を操作するための便利なメソッドが用意されています。スラッグを作成するためには、Strクラスのslugメソッドを使用します。
use Illuminate\Support\Str;
$slug = Str::slug('Hello World', '-');
echo $slug; // 出力: hello-world
slugメソッドの第2引数には、スラッグの区切り文字を指定することができます。上記の例では、スペースをハイフンに置換しています。
- Laravelのルートモデルバインディングを使用する方法: ルートモデルバインディングは、URLの一部にモデルの識別子を直接埋め込むことができる機能です。スラッグを使用してURLを作成する場合、モデルにslug属性を追加し、ルートモデルバインディングを設定します。
// ルート定義
Route::get('articles/{article:slug}', function (App\Models\Article $article) {
// ルートパラメータとしてスラッグを使用して記事を取得する
return $article;
});
// Articleモデル
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
public function getRouteKeyName()
{
return 'slug';
}
}
上記の例では、記事モデルのgetRouteKeyNameメソッドをオーバーライドして、スラッグ属性をルートキーとして使用しています。
これらはLaravelでスラッグを作成するための2つの一般的な方法です。どちらを選ぶかは、プロジェクトの要件や個人の好みによって異なります。