Contao Alias Generierung
Data Container Array erweitern
Zunächst benötigen wir für unser DCA einen alias Feld. Der Alias Feld benötigt einen save_callback Hook, welcher unser 'generateAlias' Funktion aufruft. Die generateAlias Funktion erzeugt den passenden Alias.
In der generateAlias Funktion sollte nur noch die $table Variable angepasst werden.
DCA Snippet
<?php
$GLOBALS['TL_DCA']['tl_demo'] = array
(
'fields' => array
(
'alias' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_demo']['alias'],
'inputType' => 'text',
'eval' => array('rgxp' => 'alias', 'maxlength' => 128),
'save_callback' => array(array('tl_demo', 'generateAlias')),
'sql' => "varchar(128) COLLATE utf8_bin NOT NULL default ''"
)
)
);
generateAlias Snippet
class tl_demo extends Backend
{
public function generateAlias($varValue, $dc)
{
$autoAlias = false;
// Generiere einen Alias wenn es keinen gibt
if ($varValue == '') {
$autoAlias = true;
$varValue = StringUtil::generateAlias($dc->activeRecord->title);
}
// Die gewünschte Tabelle zuweisen, aus der ein auto- Alias generiert werden soll.
// Input::get('table') lassen, wenn die Tabelle dynamisch zugeordnet werden soll.
$table = Input::get('table') ? Input::get('table') : 'tl_demo';
$objAlias = $this->Database->prepare("SELECT id FROM " . $table . " WHERE alias=?")->execute($varValue);
// Überprüfe ob der Alias bereits existiert.
if ($objAlias->numRows > 1 && !$autoAlias) {
throw new \Exception(sprintf($GLOBALS['TL_LANG']['ERR']['aliasExists'], $varValue));
}
// wenn alias bereits existiert, füge eine ID hinzu.
if ($objAlias->numRows && $autoAlias) {
$varValue .= '-' . $dc->id;
}
return $varValue;
}
}
Der Schutz Ihrer persönlichen Daten ist uns ein wichtiges Anliegen. Auf dieser Website werden keine Cookies eingesetzt und es findet keinerlei Tracking oder Analyse Ihres Nutzerverhaltens statt. Es werden keine personenbezogenen Daten erhoben, verarbeitet oder gespeichert. Ihre Nutzung unserer Website erfolgt somit vollständig anonym.
Datenschutzerklärung
