Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF][SF2]DI w konrolerze
Matrix12
post
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 22.03.2015

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


Witam,


mam pytanie. Posiadam kilka kontrolerów, są to czyste CRUD'y i stworzyłem dodatkowy kontroler który będzie nimi wszystkimi zarządzał.
Próbuje wrzucić w konstruktorze np.


  1. public function __construct(NewsController $news)
  2. {
  3. $this->news = $news;
  4.  
  5. }
  6.  


Niestety wyświetla mi cały czas, że $news powinna być instancją klasy NewsController( wiem że tak powinno być ) ale dlaczego automatycznie nie jest to ładowane? Czy jakiś serwis muszę do tego napisać? Jak wygląda przykładowa implementacja takiego rozwiązania ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Forti
post
Post #2





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Tworzenie DI dla controller to imo zla praktyka. Zrób sobie coś takiego:

  1. services:
  2. acme.controller_service:
  3. class: Acme\ExampleBundle\Service\ControllerService
  4. arguments: ['@service_container']


  1. <?php
  2.  
  3. namespace Acme\ExampleBundle\Service;
  4.  
  5. use Symfony\Component\DependencyInjection\ContainerInterface as Container;
  6.  
  7. class ControllerService
  8. {
  9. protected $container;
  10.  
  11. public function __construct(Container $container)
  12. {
  13. $this->container = $container;
  14. }
  15. }


i teraz normalnie w controller robisz np.
  1. $this->get('service_jakis_sobie')


. Tutaj robisz
  1. $this->container->get('service_jakis_sobie')


Trzymasz cała logike w takich "serwisach" (IMG:style_emoticons/default/wink.gif)
Np. do doctrine robisz $this->container->get('doctrine')->getManager. W controllerze w którym "Zarządzasz" robisz:

  1. $this->get('acme.controller_service')



Nie jest to do końca prawidłowe. Powinno unikać się wstrzykiwania całego kontenera usług, a jedynie to co potrzebujemy.


Troche chaotycznie napisałem ponieważ jestem na uczelni. Jak coś to pytaj.

Ten post edytował Forti 11.04.2015, 14:13:07
Go to the top of the page
+Quote Post

Posty w temacie
- Matrix12   [SF][SF2]DI w konrolerze   11.04.2015, 07:29:29
- - kpt_lucek   Bo musisz zdefiniować DI poprzez konfigurację bund...   11.04.2015, 12:49:55
- - Matrix12   Czyli rozumiem, że jest to np. tak: [PHP] pobier...   11.04.2015, 12:55:01
- - kpt_lucek   Zacznijmy może od tego co chcesz zrobić, bo w prak...   11.04.2015, 13:05:49
- - Matrix12   Mam kilka crudów którymi chciałbym zarządzać z Adm...   11.04.2015, 13:10:26
- - kpt_lucek   Zacznijmy od tego że Twój controller rozszerza Bas...   11.04.2015, 13:14:09
- - Matrix12   Próbowałem zdefiniować kontroler jako serwis ale t...   11.04.2015, 13:20:52
- - kpt_lucek   Stwierdzenie "nie działa" mówi tyle co n...   11.04.2015, 13:22:05
- - Matrix12   Dostaje taki bład: [PHP] pobierz, plaintext ...   11.04.2015, 13:38:29
- - kpt_lucek   [PHP] pobierz, plaintext services: news_control...   11.04.2015, 13:59:29
- - Forti   Tworzenie DI dla controller to imo zla praktyka. Z...   11.04.2015, 14:11:55
- - kpt_lucek   Moim zdaniem, tworzenie controllerów jako usług ma...   11.04.2015, 14:25:05
- - Matrix12   Jednak zdecydowałem tak jak radziłeś : [PHP] pobi...   11.04.2015, 18:29:59
- - kpt_lucek   Cytat(Matrix12 @ 11.04.2015, 19:29:59...   11.04.2015, 19:32:01
- - Matrix12   Poprzez AdminController chce odwoływać się do meto...   11.04.2015, 19:44:21
- - kpt_lucek   [PHP] pobierz, plaintext <?php namespace A...   11.04.2015, 20:06:52
- - Matrix12   Powiedz mi w routingu lepiej używać adnotacji czy ...   11.04.2015, 20:57:01
- - kpt_lucek   Wedle uznania, ja używam adnotacji, bo jest wszyst...   11.04.2015, 21:00:51
- - Matrix12   Teraz spotykam się z kolejnym ograniczeniem.. Zast...   12.04.2015, 10:23:52


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: 12.01.2026 - 17:14