| Package Data | |
|---|---|
| Maintainer Username: | alexeymezenin |
| Maintainer Contact: | alexeymezenin@gmail.com (Alexey Mezenin) |
| Package Create Date: | 2016-04-04 |
| Package Last Update: | 2022-02-23 |
| Home Page: | |
| Language: | PHP |
| License: | MIT |
| Last Refreshed: | 2025-10-30 15:04:35 |
| Package Statistics | |
|---|---|
| Total Downloads: | 2,562 |
| Monthly Downloads: | 18 |
| Daily Downloads: | 0 |
| Total Stars: | 26 |
| Total Watchers: | 3 |
| Total Forks: | 8 |
| Total Open Issues: | 4 |
This package offers easy to use cyrillic slugs like 'Как_вырастить_дерево' and Yandex transliterated 'kak-vyrastis-derevo' slugs and their variations with lowercased letters and different separators.
Start with editing your Laravel project's composer.json file, add this line to the require section:
"require": {
....
"alexeymezenin/laravel-russian-slugs": "0.9.*"
After that run this command to install package:
composer update
Now, insert these two lines into provider and aliases arrays in config/app.php:
'providers' => [
....
AlexeyMezenin\LaravelRussianSlugs\SlugsServiceProvider::class,
'aliases' => [
....
'Slug' => AlexeyMezenin\LaravelRussianSlugs\SlugsFacade::class,
Finally, you need to register config file and slugs-related commands by running:
php artisan vendor:publish
To use package, you need to update your models with thisuse clause:
class Articles extends Model
{
use \AlexeyMezenin\LaravelRussianSlugs\SlugsTrait;
Then you need to create slug column in a migration:
$table->string('slug');
To use auto slug creation feature add slugFrom property to your model:
protected $slugFrom = 'article_name';
In this case, every time when you're saving data to a DB, package tries to create (but not recreate) a new slug and save it:
$article = Article::create(['article_name' => 'Как вырастить дерево?']);
Of course, that doesn't work with mass inserts and updates when you're updating multiple rows with one query.
To create new record with a slug use reslug() method. This will add slug, based on name column:
$article = new Article;
$article->name = 'How to grow a tree?';
$article->reslug('name');
$article->save();
You can update existing record and add a slug:
$article = Article::find(1);
$article->reslug('name');
$article->save();
If slug already exists, but you need to recreate it, use forced reslug:
$article->reslug('name', true);
Alternatively, you can use Slug facade to manually work with slugs:
$article = Article::find(1);
$article->update([
'slug' => Slug::build($article->name)
]);
findBySlug() method allows you to find a model by it's slug:
$slug = 'how-to-grow-a-tree';
$article = Article::findBySlug($slug);
echo $article->name; // Will output "How to grow a tree?"
To configure a package you should edit config/seoslugs.php file.
delimiter is a symbol which replaces all spaces in a string. By default it's '_', but also can be '-'.
urlType is a type of slug:
Default is 1. Used for URLs like /категория/книги_в_москве
2 is for traslitterated URLs like /kategoriya/knigi_v_moskve, Yandex rules used to transliterate URL.
keepCapitals is false by default. When true it keeps capital letters in a slug, for example: /книги_в_Москве
slugColumnName sets the name of a slug column. slug by default.
There are three console commands available in the package:
php artisan slug:auto {table} {column} command creates and executes migration, reslugs a table (creates slugs for all rows) using {column} as source.
php artisan slug:migration {table} command creates migration to add a slug column.
php artisan slug:reslug {table} {column} command creates or recreates slugs for a specified table.
Commands slug:auto and slug:reslug will recreate all slugs, even if they are already exist (forced reslug used).
RussianSeoSlugs was written by Alexey Mezenin and released under the MIT License.