Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony2][SF2][SF]wstrzykiwanie validatora problem
Forum PHP.pl > Forum > PHP > Frameworki
symer
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?
Dyzma
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±ć.
symer
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. }
Dyzma
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"]

symer
No wła¶nie Chciałem sam Validator. No ale próbowałem i nie wychodziło. Wypróbuje Twój kod . Dzięki
To jest wersja lo-fi głównej zawarto¶ci. Aby zobaczyć pełn± wersję z większ± zawarto¶ci±, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.