Guten Morgen,
ich versuche gerade das Contentelement Metamodels-Liste zu erweitern.
Das Feld dass ich einbauen will wird angezeigt, lässt sich aber nicht speichern.
Der options_callback wird irgendwie nicht geladen. Woran kann das liegen?
PHP-Code:
<?php
$GLOBALS['TL_DCA']['tl_content']['palettes']['metamodel_content'] = str_replace('{mm_filter_legend},', '{mm_filter_legend},avancetags,', $GLOBALS['TL_DCA']['tl_content']['palettes']['metamodel_content']);
$GLOBALS['TL_DCA']['tl_content']['fields']['avancetags'] = array(
'label' => array('Tags anzeigen', 'Bitte geben Sie die Tags an die angezeigt werden sollen.'),
'exclude' => true,
'inputType' => 'checkbox',
'eval' => array('multiple' => true),
'default' => array(1,14,15),
'save_callback' => array('tl_content_metamodel_tags', 'saveTags'),
'options_callback' => array('tl_content_metamodel_tags', 'loadTags')
);
class tl_content_metamodel_tags extends Backend
{
/**
* Import the back end user object
*/
public function __construct()
{
parent::__construct();
$this->import('BackendUser', 'User');
}
/**
* Load Tags
*
* @param mixed
* @param \DataContainer
* @return mixed
*/
public function loadTags($varValue)
{
$items = $this->Database->prepare("SELECT id, name FROM mm_tags as tags;")->execute();
/**
* Join the IDs of the selected tags as ID into the array
*/
$options = array();
foreach($items->fetchAllAssoc() as $k=>$v) {
$options[$v['id']] = $v['name'];
}
return $options;
}
/**
* Save Tags
*
* @param mixed
* @param \DataContainer
* @return mixed
*/
public function saveTags($varValue, $dca)
{
$tags = unserialize($varValue);
$pageId = $dca->activeRecord->id;
if(! $tags) {
$this->clearTagsForPage($pageId);
// There are no tags specified
return;
}
$this->clearTagsForPage($pageId);
foreach($tags as $tag) {
$this->Database->prepare("INSERT INTO tl_content_to_tags (content,tag) VALUES (?, ?)")
->execute($pageId, $tag);
}
}
private function clearTagsForPage($pageId) {
$this->Database->prepare("DELETE FROM tl_content_to_tags WHERE content = ?")->execute($pageId);
}
}