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%)
-----


Hmmm... czytałem już ten artykuł ale do mojego przypadku nie za bardzo mogę dostosować którąś z opcji.

Class Gedmo\Translatable\TranslatableListener nie mogę w żaden sposób zmieniać, ani dodać settera (setter injection), ani grzebać w konstruktorze. Czytając po forach niektórzy sugerują uzycie dodatkowej klasy np. RequestInjector, która tworzyłaby funkcję serwisu proxy dla request:

  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. $this->container->get('request')->getLocale();
  23. }
  24. }
  25.  


Mam pytanie. Czy istnieje możliwość wywołania metody bezpośrednio na service?

  1. request_injector
  2. class: Lib\RequestInjector
  3. public: false
  4. arguments: ['@service_container']
  5.  
  6.  
  7.  
  8. gedmo.listener.translatable:
  9. class: Gedmo\Translatable\TranslatableListener
  10. tags:
  11. - { name: doctrine.event_subscriber, connection: default }
  12. calls:
  13. - [ setAnnotationReader, [ @annotation_reader ] ]
  14. - [ setTranslatableLocale, [ @request_injector ] ] # jak tu zwrócić samo getLocale?(IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) ?
  15. - [ setTranslationFallback, [ true ] ]
  16.  
  17.  


Czy da się tak zrobić, aby zwrócić do metody setTranslatableLocale sama wartość, poprzez wywołanie metody na RequestInjector? I czy to nie kłóci się z logiką services?

Ten post edytował blackroger 31.03.2013, 11:26:23
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: 5.10.2025 - 15:04