{"id":20225600,"url":"https://github.com/devboyarif/laravel-unique-slug-generator","last_synced_at":"2025-03-03T12:45:16.693Z","repository":{"id":65508462,"uuid":"590068360","full_name":"devboyarif/laravel-unique-slug-generator","owner":"devboyarif","description":"A simple unique slug generator for the Laravel applications","archived":false,"fork":false,"pushed_at":"2023-01-26T16:07:44.000Z","size":11,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-13T23:28:31.032Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devboyarif.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2023-01-17T15:35:04.000Z","updated_at":"2023-01-26T15:34:28.000Z","dependencies_parsed_at":"2023-02-14T19:15:37.577Z","dependency_job_id":null,"html_url":"https://github.com/devboyarif/laravel-unique-slug-generator","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devboyarif%2Flaravel-unique-slug-generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devboyarif%2Flaravel-unique-slug-generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devboyarif%2Flaravel-unique-slug-generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devboyarif%2Flaravel-unique-slug-generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devboyarif","download_url":"https://codeload.github.com/devboyarif/laravel-unique-slug-generator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241670092,"owners_count":20000325,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T07:13:46.884Z","updated_at":"2025-03-03T12:45:16.648Z","avatar_url":"https://github.com/devboyarif.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# laravel-unique-slug-generator\nA simple unique slug generator for the Laravel applications\n\n\n---\n\n## Installation\n\n```sh\ncomposer require devboyarif/laravel-unique-slug\n```\n\n## Configuration\n**Service Provider Registration**\nIn `config/app.php`, add in `providers` array -\n\n```php\n'providers' =\u003e [\n    // ...\n    Devboyarif\\LaravelUniqueSlug\\UniqueSlugServiceProvider::class,\n    // ...\n],\n```\n\n**Facade Class Alias**\nAdd in aliases array - \n```php\n'aliases' =\u003e Facade::defaultAliases()-\u003emerge([\n    // ...\n    'UniqueSlug' =\u003e Devboyarif\\LaravelUniqueSlug\\Facades\\UniqueSlug::class,\n    // ...\n])-\u003etoArray(),\n```\n\n## Use from Controller\n\n#### Import first the UniqueSlug facade\n```php\nuse Devboyarif\\LaravelUniqueSlug\\Facades\\UniqueSlug;\n```\n### Example #01- Post unique slug from title\n\nLet'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 -\n\n```php\nuse App\\Models\\Post;\n\n// First time create post with title Simple Post\nUniqueSlug::generate(Post::class, 'Simple Post', 'slug');\n// Output: simple-post\n\n// Second time create post with title Simple Post\nUniqueSlug::generate(Post::class, 'Simple Post', 'slug');\n// Output: simple-post-1\n\n// Third time create post with title Simple Post\nUniqueSlug::generate(Post::class, 'Simple Post', 'slug');\n// Output: simple-post-2\n```\n\n### Example #02 - Pass custom separator\n\nLet's assume separator is `''` empty.\n\n```php\n// First time create user.\nUniqueSlug::generate(User::class, 'arif', 'username', ''); // arif\n\n// Second time create user.\nUniqueSlug::generate(User::class, 'arif', 'username', ''); // arif1\n\n// Third time create user.\nUniqueSlug::generate(User::class, 'arif', 'username', ''); // arif2\n```\n\n### Example - Unique slug for category or any model easily\n```php\npublic function create(array $data): Category|null\n{\n    if (empty($data['slug'])) {\n        $data['slug'] = UniqueSlug::generate(Category::class, $data['name'], 'slug');\n    }\n\n    return Category::create($data);\n}\n```\n\n## API Docs\n\n### Generate method -\n```php\nUniqueSlug::generate($model, $value, $field, $separator);\n```\n\n```php\n/**\n * Generate a Unique Slug.\n *\n * @param object $model\n * @param string $value\n * @param string $field\n * @param string $separator\n *\n * @return string\n * @throws \\Exception\n */\npublic function generate(\n    $model,\n    $value,\n    $field,\n    $separator = null\n): string\n\n```\n\n#### Publish configuration\n```sh\nphp artisan vendor:publish devboyarif/laravel-unique-slug\n```\n\n#### Configurations\n\n```php\nreturn [\n   /*\n    |--------------------------------------------------------------------------\n    | Default slug seperator\n    |--------------------------------------------------------------------------\n    |\n    | This is seperator for the slug value. IF no seperator is provided then this default seperator will be used as slug\n    |\n    */\n   'seperator' =\u003e '-',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Slug max count limit\n    |--------------------------------------------------------------------------\n    |\n    | Default 100, slug will generated like test-1, test-2, test-3 ... test-100\n    |\n    */\n    'max_count' =\u003e 100,\n];\n\n```\n\n## Contribution\nYou're open to create any Pull request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevboyarif%2Flaravel-unique-slug-generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevboyarif%2Flaravel-unique-slug-generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevboyarif%2Flaravel-unique-slug-generator/lists"}