Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF] Translatable i ustawienie locale na podstawie sesji (services)
blackroger
post
Post #1





Grupa: Zarejestrowani
Postów: 176
Pomógł: 0
Dołączył: 8.11.2008

Ostrzeżenie: (0%)
-----


Prośba o pomoc.

mam zdefiniowany dodatek w services:

  1. services:
  2. # Doctrine Extension listeners to handle behaviors
  3.  
  4. gedmo.listener.translatable:
  5. class: Gedmo\Translatable\TranslatableListener
  6. tags:
  7. - { name: doctrine.event_subscriber, connection: default }
  8. calls:
  9. - [ setAnnotationReader, [ @annotation_reader ] ]
  10. - [ setTranslatableLocale, [ %locale% ] ]
  11. - [ setTranslationFallback, [ true ] ]
  12.  


Jak zrobić aby metoda setTranslatableLocale dostawała parametr z sesyjnego getLocale? Teraz parametr jest pobierany bezpośrednio z parametrs.ini, a ja chcę aby tam trafiała wartość z sesji...

Przy wielojęzyczności zmiany krajów powinny być transparentne dla systemu i wiem, że można sobie uruchamiać setTranslatableLocale w kontrolerze, ale mi chodzi o automat i service container.

Ten post edytował blackroger 29.03.2013, 13:00:55
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
blackroger
post
Post #2





Grupa: Zarejestrowani
Postów: 176
Pomógł: 0
Dołączył: 8.11.2008

Ostrzeżenie: (0%)
-----


Heh ...właśnie tak to załatwiam...TranslatableListenerService dziedziczący po TranslatableListener rozszerzający o setRequest....

Dobra nadal nie działa jak powinno....ehhh....

TranslatableListenerService:

  1.  
  2. namespace Lib\Service;
  3.  
  4. use Gedmo\Translatable\TranslatableListener;
  5. use Lib\RequestInjector;
  6.  
  7. class TranslatableListenerService extends TranslatableListener
  8. {
  9. public function setTranslatableLocale($locale)
  10. {
  11. if($locale instanceof RequestInjector)
  12. {
  13. $locale = $locale->getRequest()->getLocale();
  14. }
  15. echo $locale;exit;
  16. parent::setTranslatableLocale($locale);
  17. }
  18. }
  19.  


RequestInjector:

  1. namespace Lib;
  2.  
  3. use Symfony\Component\DependencyInjection\ContainerInterface as Container;
  4.  
  5. class RequestInjector
  6. {
  7.  
  8. protected $container;
  9.  
  10. public function __construct(Container $container)
  11. {
  12. $this->container = $container;
  13. }
  14.  
  15. public function getRequest()
  16. {
  17. return $this->container->get('request');
  18. }
  19.  
  20. public function getLocale()
  21. {
  22. return $this->getRequest()->getLocale();
  23. }
  24. }
  25.  


services.yml:

  1. gedmo.listener.translatable:
  2. class: Lib\Service\TranslatableListenerService
  3. tags:
  4. - { name: doctrine.event_subscriber, connection: default }
  5. calls:
  6. - [ setAnnotationReader, [ @annotation_reader ] ]
  7. - [ setTranslatableLocale, [ @request_injector ] ]
  8. - [ setTranslationFallback, [ true ] ]
  9.  



Nadal nie jest tak jak powinno. Przy clear cache:
[Symfony\Component\DependencyInjection\Exception\InactiveScopeException]
You cannot create a service ("request") of an inactive scope ("request").


Pomocy...



Ten post edytował blackroger 31.03.2013, 19:48:05
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 17:34