Ein Link, welcher eine Backend-Aktion auslöst würde uns schon reichen, ob nun über einen Controller oder anders.
In der dca/tl_news.php haben wir jetzt folgenden Eintrag (wie MrLumbergh schon erwähnt hat):
PHP-Code:
$GLOBALS['TL_DCA']['tl_news']['list']['operations']['translate'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_news']['green_flag'],
'href' => 'key=translate',
'icon' => 'edit.gif'
);
Dazu haben wir noch einen Eintrag in einer, von uns angelegten, config.php gemacht:
PHP-Code:
array_insert($GLOBALS['BE_MOD'], 1, array(
'translations' => array
(
'translate' => array
(
'translate' => array('App\NewsTranslator\NewsTranslator', 'translate')
)
)
));
@Spooky: Wenn ich das richtig verstehe, erzeugt der zweite Eintrag ein Backend-Modul, welches wir aber glaube ich gar nicht brauchen.
Zumindest führt uns der Klick auf eine leere Liste von Newseinträgen. Eigentlich brauchen wir hier nur einen Ajax-Call der getriggert wird,
weswegen ich mich frage, ob wir den zweiten Eintrag in der config.php (bzw. die zusätzliche config.php) überhaupt brauchen?
Wenn ich das richtig sehe, könnten wir einen neuen Controller mit einer neuen Route erstellen und den Link zur Route in den "href"-key der dca legen.
Dazu entstehen bei mir zwei Fragen:
1. Wie können wir bei der Controller-Route die News-Id als Parameter mitgeben? Geht das überhaupt in der dca?
2. Gibt es theoretisch auch eine Möglichkeit ohne Controller eine Backend Funktion aufzurufen (mit entsprechendem Parameter News-Id)? Also so wie es im zweiten Eintrag gemacht wird mit:
PHP-Code:
'translate' => array('App\NewsTranslator\NewsTranslator', 'translate')
?
Momentan kommt man, bei Klick auf den "Translate-Button", nicht in die
PHP-Code:
App\NewsTranslator\NewsTranslator::translate()
.
Eigentlich sollte das ja keine große Schwierigkeit sein, eine PHP-Backend Funktion mit Parameter per Klick zu triggern.
Vermutlich vermischen wir das gerade irgendwelche Konzepte und haben noch nicht die richtige Herangehensweise.