Symfony:切换语言而不会丢失表单中的输入

时间:2018-03-06 14:12:56

标签: forms symfony translation

我有一个可以切换成不同语言的表单。问题是当语言被交换时,由于页面刷新而没有保存,所有输入都会丢失。 我希望在切换语言后保留变量的输入,或者避免用户在填写表单时更改语言。

用于切换语言的按钮会更改区域设置并以相应的语言显示内容:

<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
{% if (app.request.getLocale()) == 'de' %}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{ 'navbar.language'|trans }} <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li class="active"><a href="#"> De</a></li>
<li class=""><a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'fr'})) }}"> Fr</a></li>
<li class=""><a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'it'})) }}"> It</a></li>
<li class=""><a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'en'})) }}"> En</a></li>
</ul>
</li>
{% endif %}
{% if (app.request.getLocale()) == 'fr' %}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{ 'navbar.language'|trans }} <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li class=""><a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'de'})) }}"> De</a></li>
<li class="active"><a href="#"> Fr</a></li>
<li class=""><a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'it'})) }}"> It</a></li>
<li class=""><a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'en'})) }}"> En</a></li>
</ul>
</li>
{% endif %}
{% if (app.request.getLocale()) == 'it' %}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{ 'navbar.language'|trans }} <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li class=""><a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'de'})) }}"> De</a></li>
<li class=""><a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'fr'})) }}"> Fr</a></li>
<li class="active"><a href="#"> It</a></li>
<li class=""><a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'en'})) }}"> En</a></li>
</ul>
</li>
{% endif %}
{% if (app.request.getLocale()) == 'en' %}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{ 'navbar.language'|trans }} <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li class=""><a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'de'})) }}"> De</a></li>
<li class=""><a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'fr'})) }}"> Fr</a></li>
<li class=""><a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'it'})) }}"> It</a></li>
<li class="active"><a href=""> En</a></li>
</ul>
</li>
{% endif %}
</ul>
 </div><!--/.navbar-collapse -->

我现在想到两种可能性。一个JavaScript函数,用于显示和隐藏元素,或者有一个中间页面,首先选择语言,然后转发到所选的表单版本。

我怎样才能实现这些可能性之一: 1.切换语言后保持输入 2. JavaScript功能 3.语言选择的中介页面

0 个答案:

没有答案