Cviebrock\EloquentSluggable\Services\SlugService::createSlug PHP Method

createSlug() public static method

Generate a unique slug for a given string.
public static createSlug ( Model | string $model, string $attribute, string $fromString, array $config = null ) : string
$model Illuminate\Database\Eloquent\Model | string
$attribute string
$fromString string
$config array
return string
    public static function createSlug($model, $attribute, $fromString, array $config = null)
    {
        if (is_string($model)) {
            $model = new $model();
        }
        $instance = (new self())->setModel($model);
        if ($config === null) {
            $config = array_get($model->sluggable(), $attribute);
        } elseif (!is_array($config)) {
            throw new \UnexpectedValueException('SlugService::createSlug expects an array or null as the fourth argument; ' . gettype($config) . ' given.');
        }
        $config = $instance->getConfiguration($config);
        $slug = $instance->generateSlug($fromString, $config, $attribute);
        $slug = $instance->validateSlug($slug, $config, $attribute);
        $slug = $instance->makeSlugUnique($slug, $config, $attribute);
        return $slug;
    }

Usage Example

 /**
  * Test that we can generate a slug statically with different configuration.
  *
  * @test
  */
 public function testStaticSlugGeneratorWithConfig()
 {
     $config = ['separator' => '.'];
     $slug = SlugService::createSlug(Post::class, 'slug', 'My Test Post', $config);
     $this->assertEquals('my.test.post', $slug);
 }