Визуализация вида после изменения локали с помощью Ajax в Symfony 4 - PullRequest
1 голос
/ 21 марта 2019

Я пытаюсь изменить язык страницы с помощью раскрывающегося списка. Выпадающий код генерируется этим кодом {{ 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, языки меняются) Пожалуйста, помогите мне сделать это.

1 Ответ

0 голосов
/ 26 марта 2019

Я думаю, это то, что вы ищете?https://symfony.com/doc/current/translation/locale.html

Если вы следуете тому, что объясняется здесь, он должен установить языковой стандарт для всего компонента перевода во время этого запроса.Таким образом, все ваши переведенные ярлыки изменятся.

...