从twig调用控制器并重新加载页面symfony 3

时间:2017-09-29 08:57:59

标签: php symfony multilingual

我有这个控制器

class DefaultController extends Controller
{
/**
 * @Route("/", name="homepage")
 */
public function indexAction(Request $request)
{
    $localeLang = $request->getLocale();
    $lang = $request->request->get('lang');

    if (isset($lang)){
        $newLang = $lang;
    }else{
        $newLang = $localeLang;
    }

    $this->get('session')->set("_locale", $newLang);

    return $this->render('default/index.html.twig', [
        'base_dir' => realpath($this-
>getParameter('kernel.project_dir')).DIRECTORY_SEPARATOR,
    ]);
}
}

在我的树枝上,我有按钮来改变这样的语言:

{% block javascripts %}
                    <button id='button1' class="ajax">Español</button>
                    <script>
                        $("button1").click(function(e) {
                            e.preventDefault();
                            $.ajax({
                                type: "POST",
                                url: {{ 'default' }},
                                data: {
                                    lang: 'es'
                                }
                            });
                        });

                    </script>
{% endblock javascripts %}

在我的routing.yml

default:
  path:     /
  defaults: { _controller: AppBundle:Default:index }

我的文件.xlf包含翻译messages.es.xlfmessages.en.xlf

这是我的config.yml

framework:
  translator: { fallbacks: ['%locale%'] }
  default_locale: en

如何从树枝中的按钮调用DefaultController.php并传递参数lang来更改语言并重新加载页面。

0 个答案:

没有答案