So, nach einem Tag Arbeit (suchen und rumprobieren)
habe ich die antwort gefunden und zwar in einem Github issuse.
1. in dem FE Template der eigenen Erweiterung folgendes machen:
Code:
<script type="text/javascript">
var data = {};
data["REQUEST_TOKEN"] = "<?php echo REQUEST_TOKEN ?>";
$(document).ready(function(){
$("#trigger").click(function(event){
$.post(
'<?php echo \Contao\Environment::get('requestUri')?>',
data,
function(responseText) {
alert(responseText);
}
).fail(function( jqXhr, textStatus, errorThrown ){ console.log( errorThrown )});
event.preventDefault();
});
});
</script>
Wichtig dabei:
- data["REQUEST_TOKEN"] -> fügt das request-token ein, das muss mit rein, sonst der POST request nicht beim eigenen Modul an.
- bei der Zeile mit dem \Environment::get('requestUri') ... der Ajax Request wird auf die Seite "zurück umgeleitet" wo das FE Modul ist, damit man den
Request in der generate Methode des Moduls wieder abfangen kann was so ausieht:
Code:
public function generate()
{
if ($_SERVER['REQUEST_METHOD']=="POST" && \Environment::get('isAjaxRequest')) {
$this->myGenerateAjax();
exit;
}
return parent::generate();
}
//do in frontend
protected function compile()
{
...
}
public function myGenerateAjax()
{
// Ajax Requests verarbeiten
if(\Environment::get('isAjaxRequest')) {
header('Content-Type: application/json; charset=UTF-8');
echo json_encode(array(1, 2, 3));
exit;
}
}
Und ich weiß das ich hier das was bei dem Link oben stand nur noch mal wiedergegeben habe.
Aber so was gehört meiner Meinung hier ins Forum und nicht nur auf GitHub.
(da gibt es mal wieder einen Minuspunkt für die Contao Dokumentation !!)
Ich hoffe das hilft vielleicht noch Anderen.
Wenn ihr übrigens nicht POST benutzten wollt sondern GET dann sucht mal nach der jquery $.get() funktion und dann ist der Request Token auch egal glaub ich.
Lesezeichen