Ich verstehe es echt nicht. Wieso klappt das mit den Default-Werten nicht mal wenn ich die IDs fest hier eintrage.
Mein Plan war das ganze über den onload_callback zu befüllen.
Aber wenn das nicht mal fix richtig klappt...
tl_content.php
PHP-Code:
$GLOBALS['TL_DCA']['tl_content']['config']['onload_callback'][] = array('MyTags', 'setDefaultValues');
$GLOBALS['TL_DCA']['tl_content']['fields']['mytags'] = array(
'label' => array('Tags anzeigen', 'Bitte geben Sie die Tags an die angezeigt werden sollen.'),
'exclude' => true,
'inputType' => 'checkbox',
// 'default' => array(1,2,3) // Hat nicht geklappt
'eval' => array('multiple' => true, 'doNotSaveEmpty' => true),
'save_callback' => array(array('MyTags', 'saveTags')),
'options_callback' => array('MyTags', 'loadTags'),
);
MyTags-Klasse
PHP-Code:
/**
* 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 null;
}
$this->clearTagsForPage($pageId);
foreach($tags as $tag) {
$this->Database->prepare("INSERT INTO tl_content_to_tags (content,tag) VALUES (?, ?)")
->execute($pageId, $tag);
}
return null;
}
public function setDefaultValues()
{
$result = $this->Database->prepare("SELECT id,tag FROM tl_content_to_tags WHERE content = ?")
->execute(\Input::get('id'));
$tags = array();
foreach($result->fetchAllAssoc() as $item) {
$tags[] = (int) $item['tag'];
}
$GLOBALS['TL_DCA']['tl_content']['fields']['avancetags']['default'] = $tags;
}
private function clearTagsForPage($pageId) {
$this->Database->prepare("DELETE FROM tl_content_to_tags WHERE content = ?")->execute($pageId);
}
Hat jemand eine Idee wo der Fehler sich verstecken könnte. Bin echt am Verzweifeln...