Gelöst: Routing - Ajax - Language
Hallo,
Mittels Ajax rufe ich eine Funktion auf, die mir das FrontendModul zum Einloggen im Frontend (nach)ladet.
Es funktioniert auch, man kann sich einloggen oder man bekommt eine Fehlermeldung.
Problem: Es wird nur in der Browser-Sprache angezeigt, nicht in der Sprache der Seite.
Es wird wohl daran liegen, dass über die Route keine Sprache übergeben wird.
Wie kann ich die hinzufügen/setzen?
yml und Javascript angepasst
Code:
// rounting.yml
simple_ajax_routing.controller.ajaxLogin:
# path: /ajaxLogin/
path: /{_locale}/ajaxLogin/
defaults:
_controller: SimpleAjaxRouting::ajaxLogin
_scope: frontend
_token_check: true
Code:
$('body').on('submit', '.loginoverlay .mod_login.login form', function(event) {
event.preventDefault();
let formData = new FormData(this);
formData.append("modlogin", $(this).attr("id").split('tl_login_')[1]);
jQuery.ajax({
method: "POST",
// url: '/ajaxLogin/',
url: '/' + $('html').attr('lang') + '/ajaxLogin/',
data: formData,
contentType: false,
processData: false,
})
.done(function( data ) {
if (data.status == "error") {
$('.loginoverlay .inner').empty().append(data.html);
}
});
});
PHP-Code:
// Controller
public function ajaxLogin(Request $request)
{
$modlogin = 49; // Login Modul
$loginFormHtml = InsertTags::replaceInsertTags ("{{insert_module::". $modlogin."}}");
// no redirect if error....
return new JsonResponse(array(
'status' => 'error',
'html' => $loginFormHtml
),
200);
}
Contao 4.12