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
kpt_lucek
post
Post #2





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

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


  1. <?php
  2.  
  3. namespace Acme\DemoBundle\Manager\NewsService;
  4.  
  5. use Doctrine\ORM\EntityManager;
  6.  
  7. class NewsService
  8. {
  9. /**
  10.   * @var EntityManager
  11.   */
  12. protected $em;
  13.  
  14. /**
  15.   * @param EntityManager $entityManager
  16.   */
  17. public function __construct(EntityManager $entityManager)
  18. {
  19. $this->em = $entityManager;
  20. }
  21.  
  22. /**
  23.   * @param NewsInterface $news
  24.   * @return $this
  25.   */
  26. public function acceptNews(NewsInterface $news)
  27. {
  28. $news->setAccepted(true);
  29.  
  30. return $this;
  31. }
  32.  
  33. /**
  34.   * @param NewsInterface $news
  35.   * @return $this
  36.   */
  37. public function removeNews(NewsInterface $news)
  38. {
  39. $this->em->remove($news);
  40. $this->em->flush($news);
  41.  
  42. return $this;
  43. }
  44. }

  1. #services.yml
  2. services:
  3. news_service:
  4. class: Acme\DemoBundle\Manager\NewsService
  5. arguments: [ @doctrine.orm.entity_manager ]

  1. <?php
  2.  
  3. namespace Acme\DemoBundle\Controller;
  4.  
  5. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  6. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
  7. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  8. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Acme\DemoBundle\Entity\News;
  11.  
  12. class AdminController extends Controller
  13. {
  14. /**
  15.   * @Route("/news-accept/{news}", name="accept_news", requirements={"news": "\d+"})
  16.   * @ParamConverter("news", class="AcmeDemoBundle:News")
  17.   * @Template()
  18.   * @param News $news
  19.   * @return array
  20.   */
  21. public function acceptNewsAction(News $news)
  22. {
  23. $newsService = $this->get('news_service')->acceptNews($news);
  24. return [];
  25. }
  26. }


Chociażby tak, wtedy masz nie zależne usługi operujące na jakiejś konretnej funkcjonalności, chociażby News'ach.

Zobacz dodatkowo:
@see
@see

#pisane z palca#
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: 11.01.2026 - 23:05