Slug::create() 

\nn\t3::Slug()->create($model); 

Generates a slug (URL path) for a model. Automatically determines the TCA field for the slug.

\nn\t3::Slug()->create( $model );
Copied!

| @return string

Source Code 

public function create( $model )
{
	if (!$model) return false;
	\nn\t3::Db()->persistAll();
	$uid = $model->getUid();
	if (!$uid) return false;
	$tableName = \nn\t3::Db()->getTableNameForModel( $model );
	$record = \nn\t3::Db()->findByUid( $tableName, $uid, true);
	$slugField = array_shift(\nn\t3::Db()->getColumnsByType( $tableName, 'slug' ));
	$slugFieldName = $slugField['fieldName'] ?? false;
	if (!$slugFieldName) return;
	$fieldConfig = $slugField['config'];
	$evalInfo = GeneralUtility::trimExplode(',', $fieldConfig['eval'], true);
	$slugHelper = GeneralUtility::makeInstance( SlugHelper::class, $tableName, $slugFieldName, $fieldConfig );
	$slug = $slugHelper->generate($record, $record['pid']);
	$state = RecordStateFactory::forName($tableName)
		->fromArray($record, $record['pid'], $record['uid']);
	if (in_array('uniqueInSite', $evalInfo)) {
		$slug = $slugHelper->buildSlugForUniqueInSite($slug, $state);
	} else if (in_array('uniqueInPid', $evalInfo)) {
		$slug = $slugHelper->buildSlugForUniqueInPid($slug, $state);
	} else if (in_array('unique', $evalInfo)) {
		$slug = $slugHelper->buildSlugForUniqueInTable($slug, $state);
	}
	\nn\t3::Obj()->set( $model, $slugFieldName, $slug );
	\nn\t3::Db()->update( $tableName, [$slugFieldName=>$slug], $uid);
	return $model;
}
Copied!