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
Lesezeichen