我有这个控制器
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.xlf
,messages.en.xlf
。
这是我的config.yml
framework:
translator: { fallbacks: ['%locale%'] }
default_locale: en
如何从树枝中的按钮调用DefaultController.php
并传递参数lang
来更改语言并重新加载页面。