Laravel Slug Generator with Multi Language Support.
composer require sujan97825/laravel-slug-generatorService Provider Registration
In config/app.php, add in providers array -
'providers' => [
// ...
Sujan\\LaravelSlugGenerator\\SlugGeneratorServiceProvider::class,
// ...
],Facade Class Alias Add in aliases array -
'aliases' => Facade::defaultAliases()->merge([
// ...
'SlugGenerator' => Sujan\LaravelSlugGenerator\Facades\SlugGenerator::class,
// ...
])->toArray(),use Sujan\LaravelSlugGenerator\Facades\SlugGenerator;Let's assume, we have in Post class, we've added slug column which is unique. Now, if we passed title and generate slug from that, then -
use App\Models\Post;
// First time create post with title
SlugGenerator::uniqueSlug(Post::class, 'সম্পন্ন !#$%$%^ হল বঙ্গবন্ধু&**( টানেলের //? প্রথম টিউবের )()(**@%$^&*( কাজ ', 'slug');
// Output: সম্পন্ন-হল-বঙ্গবন্ধু-টানেলের-প্রথম-টিউবের-কাজ
// Second time create post with title
SlugGenerator::uniqueSlug(Post::class, 'সম্পন্ন !#$%$%^ হল বঙ্গবন্ধু&**( টানেলের //? প্রথম টিউবের )()(**@%$^&*( কাজ ', 'slug');
// Output: সম্পন্ন-হল-বঙ্গবন্ধু-টানেলের-প্রথম-টিউবের-কাজ-1
// Third time create post with title
SlugGenerator::uniqueSlug(Post::class, 'সম্পন্ন !#$%$%^ হল বঙ্গবন্ধু&**( টানেলের //? প্রথম টিউবের )()(**@%$^&*( কাজ ', 'slug');
// Output: সম্পন্ন-হল-বঙ্গবন্ধু-টানেলের-প্রথম-টিউবের-কাজ-2// First time create post with title
SlugGenerator::generalSlug('সম্পন্ন !#$%$%^ হল বঙ্গবন্ধু&**( টানেলের //? প্রথম টিউবের )()(**@%$^&*( কাজ ');
// Output: সম্পন্ন-হল-বঙ্গবন্ধু-টানেলের-প্রথম-টিউবের-কাজ
// Second time create post with title
SlugGenerator::generalSlug('সম্পন্ন !#$%$%^ হল বঙ্গবন্ধু&**( টানেলের //? প্রথম টিউবের )()(**@%$^&*( কাজ ');
// Output: সম্পন্ন-হল-বঙ্গবন্ধু-টানেলের-প্রথম-টিউবের-কাজSlugGenerator::uniqueSlug($model, $value, $field, $separator);
SlugGenerator::generalSlug($value,$separator);/**
* Generate a Unique Slug.
*
* @param object $model
* @param string $value
* @param string $field
* @param string $separator
*
* @return string
* @throws \Exception
*/
public function uniqueSlug(
$model,
$value,
$field,
$separator = null
): string/**
* Generate a general Slug.
*
* @param string $value
* @param string $separator
*
* @return string
*/
public function generalSlug(
$value,
$separator = null
): stringphp artisan vendor:publish --provider="Sujan\LaravelSlugGenerator\SlugGeneratorServiceProvider"return [
/*
|--------------------------------------------------------------------------
| Slug default separator.
|--------------------------------------------------------------------------
|
| If no separator is passed, then this default separator will be used as slug.
|
*/
'separator' => '-',
/*
|--------------------------------------------------------------------------
| Slug max count limit
|--------------------------------------------------------------------------
|
| Default 100, slug will generated like
| test-1, test-2, test-3 .... test-100
|
*/
'max_count' => 100,
];
https://github.com/ManiruzzamanAkash/laravel-unique-slug-generatorYou're open to create any Pull request.