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;
}
}
Mit der Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies verwenden.
Datenschutzerklärung