Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][SF2][Symfony2]Korzystanie z serwisu poza kontrolerem
Geniesis
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 5
Dołączył: 4.12.2013
Skąd: Śląsk

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


Witam, mam dosyć banalny problem:
chcę wywoływać zapytania z poziomu modelu zamiast kontrolera, oczywiście w kontrolerze nie jest to problem, ponieważ mamy metodę getDoctrine().
Jako, że wywoływanie owego obiektu zamierzam używać w wielu modelach postanowiłem utworzyć obiekt ParentModel z którego będą poszczególne dziedziczyć.

przykład:
  1. class DefaultController extends Controller
  2. {
  3. public function indexAction()
  4. {
  5. $defaultModel = new DefaultModel(); //linia 13
  6. // $sectionList = $defaultModel->getAllSections();

DefaultModel:
  1. class DefaultModel extends ParentModel
  2. {
  3. public function getAllSections()
  4. {
  5. $qb = $this->em->createQuery('SELECT ts FROM UserBundle\Entity\TopicSections ts');
  6. return $qb->getResult();
  7. }

ParentModel:
  1. class ParentModel
  2. {
  3. protected $em;
  4.  
  5. public function __construct(EntityManager $em)
  6. {
  7. $this->em = $em;
  8. }

Services.yml:
  1. services:
  2. userbundle.model.parent_model:
  3. class: UserBundle\Model\ParentModel
  4. arguments: [ @doctrine.orm.entity_manager ]


Wg tego co znalałem w internecie wszystko powinno ładnie działać: routing wywołuje kontroler, w kontrolerze tworzę instancję obiektu, który w rodzicu tworzy $em, który jest niezbędny do zapytań, ale (oczywiście) tak nie jest.
  1. Catchable Fatal Error: Argument 1 passed to UserBundle\Model\ParentModel::__construct() must be an instance of Doctrine\ORM\EntityManager, none given, called in /var/www/forum/src/UserBundle/Controller/DefaultController.php on line 13 and defined


Tutaj pytanie: co w poszczególnych krokach zrobiłem źle, że pojawia się owy błąd zamiast poprawnie wykonać kod? (Czy fakt dodania wpisu w service nie powinien powodować uniknięcie owego błędu?)
Chcę unikać przekazywania z kontrolera $em do modelu.

Tutaj mam jeszcze rozkwinę odnośnie działania Symfony:
Jeżeli framework szczyci się MVC to dlaczego zapytania domyslnie możemy tworzyć w kontrolerze? (Do tej pory zawsze spotykałem się z strukturą: kontroler wywołuje metodę z modelu w której jest owo zapytanie składane, model zwraca gotowe dane do kontrolera).
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: 15.09.2025 - 03:06