Метод slug
Метод slug класса Str преобразует строку в формат, подходящий для использования в URL-адресах. Он заменяет пробелы и специальные символы на дефисы, приводит текст к нижнему регистру и удаляет недопустимые символы. Первым параметром передаётся исходная строка, вторым - разделитель (по умолчанию используется дефис), третьим - язык для транслитерации.
Синтаксис
<?php
use IlluminateSupportStr;
Str::slug($string, $separator = '-', $language = 'en');
?>
Пример
Преобразуем строку с пробелами в URL-адрес:
<?php
use IlluminateSupportStr;
$title = 'Hello World from Laravel';
$slug = Str::slug($title);
echo $slug;
?>
Результат выполнения кода:
"hello-world-from-laravel"
Пример
Используем другой разделитель вместо дефиса:
<?php
use IlluminateSupportStr;
$title = 'My Awesome Article';
$slug = Str::slug($title, '_');
echo $slug;
?>
Результат выполнения кода:
"my_awesome_article"
Пример
Преобразуем строку с кириллицей в URL-адрес:
<?php
use IlluminateSupportStr;
$title = 'Привет мир из Laravel';
$slug = Str::slug($title);
echo $slug;
?>
Результат выполнения кода:
"privet-mir-iz-laravel"
Пример
Обработка строки со специальными символами:
<?php
use IlluminateSupportStr;
$title = 'Article: "Best Practices" & Tips!';
$slug = Str::slug($title);
echo $slug;
?>
Результат выполнения кода:
"article-best-practices-tips"
Пример
Используем метод в модели Eloquent для генерации slug перед сохранением:
<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
use IlluminateSupportStr;
class Article extends Model
{
protected static function boot()
{
parent::boot();
static::creating(function ($article) {
$article->slug = Str::slug($article->title);
});
}
}
?>
Пример
Используем метод slug в контроллере для создания URL-адреса:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
use IlluminateSupportStr;
class ArticleController extends Controller
{
public function show($title)
{
$slug = Str::slug($title);
$article = Article::where('slug', $slug)->first();
return view('article', ['article' => $article]);
}
}
?>