code: public function generateAlias($varValue, Contao\DataContainer $dc)
  	{
  		$aliasExists = function (string $alias) use ($dc): bool
  		{
  			if (\in_array($alias, array('top', 'wrapper', 'header', 'container', 'main', 'left', 'right', 'footer'), true))
  			{
  				return true;
  			}
  
  			return $this->Database->prepare("SELECT id FROM tl_article WHERE alias=? AND id!=?")->execute($alias, $dc->id)->numRows > 0;
  		};
  
  		// Generate an alias if there is none
  		if ($varValue == '')
  		{
  			$varValue = Contao\System::getContainer()->get('contao.slug')->generate($dc->activeRecord->title, $dc->activeRecord->pid, $aliasExists);
  		}
  		elseif ($aliasExists($varValue))
  		{
  			throw new Exception(sprintf($GLOBALS['TL_LANG']['ERR']['aliasExists'], $varValue));
  		}
  
  		return $varValue;
  	}
docs: Auto-generate an article alias if it has not been set yet
  
  @param mixed                $varValue
  @param Contao\DataContainer $dc
  
  @return string
  
  @throws Exception