我有一个奇怪的问题,以前从未发生过。粘性语言总是不起作用。
在执行这些步骤时,它会开始工作一段时间:
Viola,这种粘性语言现在有效。
我尝试了几种方法,谷歌搜索,stackoverflowed,使用自己的大脑来定制语言处理以多种方式。例如,设置一个自定义会话变量然后根据其值我尝试设置请求语言和语言到会话。但是一旦页面加载,这个原生会话变量就会丢失,包括请求参数。
这是我当前的LocateListener巫婆如上所述:
class LocateListener implements EventSubscriberInterface
{
private $defaultLocale;
public function __construct($defaultLocale = 'sk')
{
$this->defaultLocale = $defaultLocale;
}
public function onKernelRequest(GetResponseEvent $event)
{
$request = $event->getRequest();
if (!$request->hasPreviousSession())
{
return;
}
// try to see if the locale has been set as a _locale routing parameter
if ($locale = $request->attributes->get('_locale'))
{
$request->getSession()->set('_locale', $locale);
// echo "locale changed";
}
else
{
// if no explicit locale has been set on this request, use one from the session
$request->setLocale($request->getSession()->get('_locale', $this->defaultLocale));
$request->getSession()->set('_last_locale_url', $actual_link = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
}
}
public static function getSubscribedEvents()
{
return array(
// must be registered before the default Locale listener
KernelEvents::REQUEST => array(array('onKernelRequest', 17)),
);
}
}
处理语言切换的控制器操作:
public function switchlangAction(Request $req)
{
return $this->redirect($req->headers->get("referer"));
}
路由:
erik_app_switchlang:
path: /locale/{_locale}
defaults: { _controller: ErikAppBundle:Default:switchlang }
requirements:
_locale: sk|en
会话配置:
session:
cookie_domain: netlime.tk
cookie_lifetime: 3600
cookie_httponly: false
注册语言环境侦听器的方式
app.locale_listener:
class: Erik\AppBundle\Service\LocateListener
arguments: ["%kernel.default_locale%"]
tags:
- { name: kernel.event_subscriber, priority: 17 }
我正在谈论的网站是https://www.netlime.tk app_dev是允许的,如果需要,您可以尝试。 http://tvarplast.sk网站使用相同的粘性语言代码运行。
Netlime使用comodo证书在数字海洋上的自定义vps上运行。
谢谢!
---编辑 -
这是我的安全档案
security:
encoders:
Erik\UserBundle\Entity\User:
algorithm: md5
iterations: 0
encode_as_base64: false
providers:
user_db:
entity: { class: ErikUserBundle:User, property: email }
firewalls:
main:
pattern: ^/
provider: user_db
form_login:
login_path: /account/signin
check_path: /account/signin/check
logout:
path: /account/signout
target: /
security: true
anonymous: true
access_control:
- { path: ^/account/edit, roles: [ROLE_USER,ROLE_COMPANY,ROLE_ADMIN,ROLE_SUPER_ADMIN,ROLE_SONATA_ADMIN] }
- { path: ^/admin, roles: [ROLE_ADMIN,ROLE_SUPER_ADMIN,ROLE_SONATA_ADMIN] }
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }