/** * Event handler that renders custom pages in case of a NotFoundHttpException (404) * or a AccessDeniedHttpException (403). * * @param GetResponseForExceptionEvent $event */ public function onKernelException(GetResponseForExceptionEvent $event) { if ('dev' == $this->kernel->getEnvironment()) { return; } $exception = $event->getException(); $this->request->setLocale($this->defaultLocale); $this->request->setDefaultLocale($this->defaultLocale); if ($exception instanceof NotFoundHttpException) { $section = $this->getExceptionSection(404, '404 Error'); $this->core->addNavigationElement($section); $unifikRequest = $this->generateUnifikRequest($section); $this->setUnifikRequestAttributes($unifikRequest); $this->request->setLocale($this->request->attributes->get('_locale', $this->defaultLocale)); $this->request->setDefaultLocale($this->request->attributes->get('_locale', $this->defaultLocale)); $this->entityManager->getRepository('UnifikSystemBundle:Section')->setLocale($this->request->attributes->get('_locale')); $response = $this->templating->renderResponse('UnifikSystemBundle:Frontend/Exception:404.html.twig', array('section' => $section)); $response->setStatusCode(404); $event->setResponse($response); } elseif ($exception instanceof AccessDeniedHttpException) { $section = $this->getExceptionSection(403, '403 Error'); $this->core->addNavigationElement($section); $unifikRequest = $this->generateUnifikRequest($section); $this->setUnifikRequestAttributes($unifikRequest); $response = $this->templating->renderResponse('UnifikSystemBundle:Frontend/Exception:403.html.twig', array('section' => $section)); $response->setStatusCode(403); $event->setResponse($response); } }
public function testLocale() { $getLocale = self::getMethod('getLocale'); $setLocale = self::getMethod('setLocale'); $this->request->setDefaultLocale('fr'); $this->actionKernel->method('getApplication')->willReturn(array('locale' => 'fr')); // Source from the default space in the application $this->assertEquals('fr', $getLocale->invokeArgs($this->action, array($this->request))); // Source from the session if set $setLocale->invokeArgs($this->action, array($this->request, 'gb')); $this->assertEquals('gb', $getLocale->invokeArgs($this->action, array($this->request))); $setLocale->invokeArgs($this->action, array($this->request, null)); $this->assertEquals('fr', $getLocale->invokeArgs($this->action, array($this->request))); }
/** * @param mixed $installed * @param bool $isSetLocale * @dataProvider onKernelRequestDataProvider */ public function testOnKernelRequest($installed, $isSetLocale) { $customLanguage = 'ru'; $customLocale = 'fr'; $request = new Request(); $context = new RequestContext(); $request->setDefaultLocale($this->defaultLocale); if ($isSetLocale) { $this->localeSettings->expects($this->once())->method('getLanguage')->will($this->returnValue($customLanguage)); $this->localeSettings->expects($this->once())->method('getLocale')->will($this->returnValue($customLocale)); $this->router->expects($this->once())->method('getContext')->willReturn($context); } else { $this->localeSettings->expects($this->never())->method('getLanguage'); $this->localeSettings->expects($this->never())->method('getLocale'); } $this->container->expects($this->any())->method('getParameter')->with('installed')->willReturn($installed); $this->listener = new LocaleListener($this->container); $this->listener->onKernelRequest($this->createGetResponseEvent($request)); if ($isSetLocale) { $this->assertEquals($customLanguage, $request->getLocale()); $this->assertEquals($customLanguage, $context->getParameter('_locale')); $this->assertEquals($customLocale, \Locale::getDefault()); } else { $this->assertEquals($this->defaultLocale, $request->getLocale()); $this->assertEquals($this->defaultLocale, \Locale::getDefault()); } }
protected function initialize(InputInterface $input, OutputInterface $output) { // The mailer service needs the default locale $locale = $this->getContainer()->get('translator')->getLocale(); // We build a fake request with the default locale $request = new Request(); $request->setDefaultLocale($locale); $this->getContainer()->get('request_stack')->push($request); }
public function testOnKernelRequest() { $customLocale = 'fr'; $request = new Request(['locale' => $customLocale]); $request->server->set('REQUEST_URI', '/api/rest/test'); $request->setDefaultLocale($this->defaultLocale); $this->listener = new LocaleListener(); $this->listener->onKernelRequest($this->createGetResponseEvent($request)); $this->assertEquals($customLocale, $request->getLocale()); }
public function testOnKernelRequest() { $customLocale = 'fr'; $request = new Request(['locale' => $customLocale]); $request->server->set('REQUEST_URI', '/api/rest/test'); $request->setDefaultLocale($this->defaultLocale); $translationListener = new TranslatableListener(); $container = $this->getMockBuilder('Symfony\\Component\\DependencyInjection\\Container')->setMethods(['get'])->getMock(); $container->expects($this->any())->method('get')->willReturn($translationListener); $this->listener = new LocaleListener($container); $this->listener->onKernelRequest($this->createGetResponseEvent($request)); $this->assertEquals($customLocale, $request->getLocale()); $this->assertEquals($customLocale, $translationListener->getListenerLocale()); }
/** * @param mixed $installed * @param bool $isSetLocale * @dataProvider onKernelRequestDataProvider */ public function testOnKernelRequest($installed, $isSetLocale) { $customLanguage = 'ru'; $customLocale = 'fr'; $request = new Request(); $request->setDefaultLocale($this->defaultLocale); if ($isSetLocale) { $this->localeSettings->expects($this->exactly(2))->method('getLanguage')->will($this->returnValue($customLanguage)); $this->localeSettings->expects($this->once())->method('getLocale')->will($this->returnValue($customLocale)); } else { $this->localeSettings->expects($this->never())->method('getLanguage'); $this->localeSettings->expects($this->never())->method('getLocale'); } $this->listener = new LocaleListener($this->localeSettings, $this->transListener, $installed); $this->listener->onKernelRequest($this->createGetResponseEvent($request)); if ($isSetLocale) { $this->assertEquals($customLanguage, $request->getLocale()); $this->assertEquals($customLocale, \Locale::getDefault()); } else { $this->assertEquals($this->defaultLocale, $request->getLocale()); $this->assertEquals($this->defaultLocale, \Locale::getDefault()); } }
public function testIntlLocale() { if (!extension_loaded('intl')) { $this->markTestSkipped('The intl extension is needed to run this test.'); } $request = new Request(); $request->setDefaultLocale('fr'); $this->assertEquals('fr', $request->getLocale()); $this->assertEquals('fr', \Locale::getDefault()); $request->setLocale('en'); $this->assertEquals('en', $request->getLocale()); $this->assertEquals('en', \Locale::getDefault()); $request->setDefaultLocale('de'); $this->assertEquals('en', $request->getLocale()); $this->assertEquals('en', \Locale::getDefault()); }
/** * @requires extension intl */ public function testIntlLocale() { $request = new Request(); $request->setDefaultLocale('fr'); $this->assertEquals('fr', $request->getLocale()); $this->assertEquals('fr', \Locale::getDefault()); $request->setLocale('en'); $this->assertEquals('en', $request->getLocale()); $this->assertEquals('en', \Locale::getDefault()); $request->setDefaultLocale('de'); $this->assertEquals('en', $request->getLocale()); $this->assertEquals('en', \Locale::getDefault()); }
private function setRequestLocale(Request $request, $locale) { $request->setDefaultLocale($this->defaultLocale); $request->setLocale($locale); }