Я пытаюсь изменить язык страницы с помощью раскрывающегося списка. Выпадающий код генерируется этим кодом {{ form_widget(registrationForm.locale, { 'attr': {'onChange': 'languageChange()'} }) }}
в ветке.
Функция Ajax
function languageChange() {
let selectedLanguage = $('#email_form_locale').val();
$.ajax({
url: '{{ path('change_locale') }}',
type: 'POST',
dataType: 'json',
data: {'selectedLanguage': selectedLanguage},
async: true,
success: function(data, status) {
console.info(data);
location.reload();
},
error : function(xhr, textStatus, errorThrown) {
alert('Ajax request failed.');
}
});
}
Функция контроллера
/**
* @Route("/registration/changeLocale", name="change_locale")
* Method({"GET","POST"})
*/
public function changeLocale (Request $request)
{
$user = new User();
$form = $this->createForm(EmailFormType::class, $user);
if ($request->isXmlHttpRequest()) {
$jsonData = array();
$temp = $request->request->all();
$jsonData[0] = $temp;
$request->getSession()->set('_locale', $temp['selectedLanguage']);
$request->setLocale($temp['selectedLanguage']);
$jsonData[1] = $request->getLocale();
$user->setLocale($temp['selectedLanguage']);
return new JsonResponse(array(
'jsonData' => $jsonData,
'html' => $this->renderView('main/registration.html.twig', array('registrationForm' => $form->createView()))
)
);
} else {
return $this->render('main/registration.html.twig');
}
Я пытаюсь сделать вид после ответа Джейсона. Затем на странице должен быть выбран язык (я добавил модуль перевода и слова для определенных языков в папку перевода, и если я изменил локаль в services.yaml, языки меняются)
Пожалуйста, помогите мне сделать это.