Symfony 레이아웃에서 _locale 변수를 얻는 방법은 무엇입니까?
2 개 언어로 구성된 사이트에서 Symfony 2로 작업하고 있으며 사용자 로케일 언어에 따라 내 경로의 패턴을 변경하고 싶습니다!
예:
user_login_en:
pattern: /en/user/login.html
defaults: { _controller: SfErrorsAppBundle:User:login, _locale: en }
user_login_fr:
pattern: /fr/utilisateur/connexion.html
defaults: { _controller: SfErrorsAppBundle:User:login, _locale: fr}
템플릿 내부에서 이것은 어렵지 않습니다. 컨트롤러에서 템플릿으로 $ this-> get ( 'session')-> getLocale ()을 전달하면됩니다.
일하려면 내 경로를 호출해야합니다.
$router->generate('user_login_'.$locale, array());
하지만 내 레이아웃 안에는 메뉴와 링크가있는 사이드 바가 있습니다. 그래서 그것을 사용하기 위해 로케일 변수를 얻고 싶습니다! 그래서 제 질문은 간단합니다. "레이아웃"템플릿 안에이 변수를 넣는 방법은 무엇입니까? 그렇지 않으면 언어에 따라 패턴을 변경할 아이디어가 있습니까?
그 이유는 영어 든 프랑스어 든 모든 사용자에게 아름다운 경로를 원하기 때문입니다. 그리고 SEO 이유도 있습니다!
--- 댓글에서 업데이트 ---
Symfony 2.1에서는 다음을 사용해야합니다.
{{ app.request.locale }}
또는
{{ app.request.getLocale() }}
app.request.locale
사용 가능하고 설정되지 않은 app.request.defaultLocale
경우 반환 됩니다 app.request.locale
.
Symfony 2.1은 세션 대신 Request에 "locale"을 저장하므로 다음을 사용해야합니다.
{{ app.request.getLocale() }}
app.session.locale 대신
또한 라우팅을 단순화 할 수 있습니다 (하나의 단일 규칙).
user_login : 패턴 : /{_locale}/user/login.html 기본값 : {_controller : SfErrorsAppBundle : User : login}
일부 언어 만 허용하려면 요구 사항을 추가 할 수 있습니다.
user_login : 패턴 : /{_locale}/user/login.html 기본값 : {_controller : SfErrorsAppBundle : User : login} 요구 사항 : _locale : fr | en
제 생각에는 이것은 Symfony 버전에 대해 걱정하지 않고 로케일을 자동 감지하는 가장 쉽고 유지 관리 할 수있는 방법입니다 .
{% if not app.session.locale is null %} {# Prior to Symfony 2.1 you must get from session, it will be null if upper #}
Locale: {{ app.session.locale }}
{% else %} {# With Symfony 2.1 or upper you only can get the locale from request #}
Locale: {{ app.request.locale }}
{% endif %}
또한 원하는 경우 Twig 템플릿 엔진 에서 표기법과 같은 개체를 사용할 수 있습니다 .
{% if not app.getSession().getLocale() is null %} {# Prior to Symfony 2.1 you must get from session, it will be null if upper #}
Locale: {{ app.getSession().getLocale() }}
{% else %} {# With Symfony 2.1 or upper you only can get the locale from request #}
Locale: {{ app.getRequest().getLocale() }}
{% endif %}
자세한 내용은 Symfony 2.1.0 릴리스 정보 를 참조하십시오.
'Nice programing' 카테고리의 다른 글
모든 메뉴가 닫힌 상태에서 아코디언을로드하려면 어떻게해야합니까? (0) | 2020.11.25 |
---|---|
오류 : 매개 변수에 지정된 스토리지 클래스 (0) | 2020.11.25 |
WPF의 명령을 컨트롤의 두 번 클릭 이벤트 처리기에 바인딩하는 방법은 무엇입니까? (0) | 2020.11.25 |
자바 스크립트 포인터 / 참조 광기. (0) | 2020.11.25 |
html에서 UL 또는 OL을 언제 사용합니까? (0) | 2020.11.25 |