taylornetwork / username-suggester
A package to suggest usernames based on taylornetwork/laravel-username-generator
Installs: 5 284
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: ^8.0|^8.1
- illuminate/support: >=8.0
- taylornetwork/laravel-username-generator: ^2.6
Requires (Dev)
- orchestra/testbench: ^6.20
- psy/psysh: ^0.10.8
This package is auto-updated.
Last update: 2024-11-08 03:24:20 UTC
README
A package to suggest usernames from taylornetwork/laravel-username-generator
This would be useful if you want to show your users a list of suggested usernames based on their entry if their selection is unavailable.
Install
Via composer
$ composer require taylornetwork/username-suggester
Publish Config
This will publish to config/username_suggester.php
$ php artisan vendor:publish --provider="TaylorNetwork\UsernameSuggester\UsernameSuggesterProvider"
Set Up
You will need to follow the quickstart guide for taylornetwork/laravel-username-generator.
At minimum your User
model needs to use the TaylorNetwork\UsernameGenerator\FindSimilarUsernames
(see set up)
Defaults
The suggester will generate 3
unique usernames based on the given name. It will use the increment
driver which will use the
TaylorNetwork\UsernameGenerator\Generator
class to convert the name to a username and then add incrementing numbers on the end to make them unique.
If no name is entered it will generate random usernames, same as TaylorNetwork\UsernameGenerator\Generator
Usage
Available Methods
suggest
The suggest()
method accepts an optional parameter of the name to suggest usernames for.
$suggester = new \TaylorNetwork\UsernameSuggester\Suggester(); $suggester->suggest(); // Returns a collection of random unique usernames $suggester->suggest('test user'); // Returns a collection of unique usernames based on the name 'test user'
setDriver
This will allow you to set a different driver than the default.
$suggester->setDriver('random');
This method returns an instance of the Suggester
class, so you're able to chain methods.
setAmount
This will allow you to set a different amount of suggestions than the default.
$suggester->setAmount(10);
This method returns an instance of the Suggester
class, so you're able to chain methods.
setGeneratorConfig
This will allow you to override the TaylorNetwork\UsernameGenerator\Generator
config.
$suggester->setGeneratorConfig([ 'separator' => '*', ]);
Same as setAmount
and setDriver
this method also returns the Suggester
instance.
Example
Basic with Random Usernames
$suggester->suggest();
Basic with Entered Name
$suggester->suggest('test user');
Different Driver and Amount
$suggester->setDriver('random')->setAmount(5)->suggest('test user');
This will use the Random
driver to append random numbers after the username and generate 5 usernames.
Using the Facade
A UsernameSuggester
facade is included so all the methods can be accessed that way.
UsernameSuggester::suggest();
Custom Drivers
You can create any custom drivers by extending the TaylorNetwork\UsernameSuggester\Drivers\BaseDriver
class.
namespace App\SuggesterDrivers; use TaylorNetwork\UsernameSuggester\Drivers\BaseDriver; class CustomDriver extends BaseDriver { public function makeUnique(string $username): string { return $username; } }
The only requirement is that you implement the makeUnique
method to make the username unique in some way.
You'll also need to register the driver in app/username_suggester.php
'drivers' => [ 'custom' => CustomDriver::class, // ... ],
You can access it using the key you set.
UsernameSuggester::setDriver('custom')->suggest();