Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony2][SF2][SF]wstrzykiwanie validatora problem
symer
post 5.04.2018, 09:40:11
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 24.08.2017

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


Witam. Otóż mam klasę usługi w AppBundle/Service/ErrorsGenerator i Chciałem tam wstrzyknąć klasę komponenta Symfony Validatora ale gdzieś jest błąd nie Chce mi wstrzyknąć. Proszę mi podpowiedzieć jak to zrobić. Ponieważ jakoś nie mogę wstrzyknąć komponentu. Co robię źle?
Mogę to inaczej zrobić ale Chce w taki sposób.
Oto moja klasa usługi :
  1. <?php
  2. namespace AppBundle\Service ;
  3. use Symfony\Component\Validator\Constraints\Regex;
  4. use Symfony\Component\Validator\Validator;
  5. use Symfony\Component\Validator\Validation;
  6. class ErrorsGenerator
  7. {
  8. private $validator;
  9.  
  10. function __construct(\Symfony\Component\Validator\Validator $validator)
  11. {
  12. $this->validator = $validator;
  13.  
}


Jak to zrobić aby działało. Mam automatyczne wstrzykiwanie. I jak dodam jakąś klasę do AppBundle/service to mi wstrzyknie ale jak z symfony/component to już nie.
Poprawka: Na przykład w kontrolerze aby użyć Validatora wystarczy :$this->get('validator'). A w usłudze?

Ten post edytował symer 5.04.2018, 10:45:21
Go to the top of the page
+Quote Post
Dyzma
post 5.04.2018, 09:52:49
Post #2





Grupa: Zarejestrowani
Postów: 13
Pomógł: 1
Dołączył: 2.04.2018

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


Klasa Container nie istnieje w przestrzeni nazw czyli 'AppBundle\Service'. Nie wiem co ta klasa ma robić, ale jeżeli chcesz użyć Symfonowego Containera to również powinieneś go wstrzyknąć.
Go to the top of the page
+Quote Post
symer
post 5.04.2018, 10:59:07
Post #3





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 24.08.2017

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


NO Ja rozumiem ale i bez tego mi nie działa. Zapomnijmy o tym Container , bo wcale nie mam zamiaru go dziedziczyć. Poprawiłem przykład.
Chcę tylko dziedziczyć validator i go użyć w usłudze a nie wiem jak. Potrzebuje jakiś przykład jak wstrzyknąć do usługi jakiś komponent z Symfony. Jakikolwiek.

Znalazłem odpowiedź :-) Może komuś się przyda
  1. use Symfony\Component\DependencyInjection\ContainerInterface as Container;
  2. class ErrorsGenerator
  3. {
  4. private $validator;
  5.  
  6. public function __construct(Container $Container)
  7. {
  8. $this->validator = $Container->get('validator');
  9. }


Ten post edytował symer 5.04.2018, 10:38:15
Go to the top of the page
+Quote Post
Dyzma
post 5.04.2018, 13:24:24
Post #4





Grupa: Zarejestrowani
Postów: 13
Pomógł: 1
Dołączył: 2.04.2018

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


Po co wstrzykwiać cały kontener? Wstrzyknij tylko zależność która jest Ci potrzebna w danym momencie czyli:

  1. /**
  2.  * @var \Symfony\Component\Validator\Validator
  3.  */
  4. protected $validator;
  5.  
  6. public function __construct(\Symfony\Component\Validator\Validator $validator)
  7. {
  8. $this->validator = $validator;
  9. }


Nie pamiętam czy SF2 ma autowire, więc musisz zadeklarować serwis.

  1. app.service.my_own_service:
  2. class: AppBunde\Service\OwnService
  3. arguments: ["@validator"]



Ten post edytował Dyzma 5.04.2018, 13:24:46
Go to the top of the page
+Quote Post
symer
post 5.04.2018, 21:36:09
Post #5





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 24.08.2017

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


No właśnie Chciałem sam Validator. No ale próbowałem i nie wychodziło. Wypróbuje Twój kod . Dzięki
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 10:54