Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony2][Symfony]Używanie własnych klas w Entity
athabus
post
Post #1





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

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


Dalej uczę się korzystać z Symfony i chciałby zrobić pewne rzeczy "ładnie". Na dzisiaj mam Zestaw swoich klas, które często używam w różnych projektach. Pomyślałem, żeby zrobić sobie z nich bundla Dajmy na to AcmeUtilBundle.

Mam w nim klasę Converter i metodę statyczną slugify.


Ok i co dalej? Rozumiem, że mogę sobie zdeklarować Service i używać wszystkiego w kontrolerze np.
  1. $this->get('Converter')->slugify($name);


Jak jednak użyć ładnie tych metod w Entity, żeby np. podczas ustawiania pola name od razu generować slug?

A może w ogóle źle zabieram się do tego problemu?

Ten post edytował athabus 8.10.2014, 14:54:13
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ziolo
post
Post #2





Grupa: Zarejestrowani
Postów: 82
Pomógł: 20
Dołączył: 17.01.2009
Skąd: Kraków

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


Dokładnie robi się tak jak napisał Matix. Wewnątrz encji nie używa się żadnych usług.
Ja też używam DoctrineExtensionBundle. Ale slug jest dość standardowy a dla innych mniej standardowych rzeczy robi się to po przez:

http://symfony.com/doc/current/cookbook/do...ubscribers.html

Czyli tworzysz subscriber lub listenera Doctrine. Rejestrujesz go jako usługę.
Np listenera PrePersist - do tego listenera wstrzykujesz swoją usługę Converter.
Sprawdzasz w PrePersist typ obiektu, jeśli typ pasuje, to wtedy ustawiasz mu sluga lub cokolwiek innego przy pomocy twojej usługi Converter.

  1. $this->get('Converter')->slugify($name);

PS: Oczywiście metoda slugify nie jest statyczna i nie powinna być statyczna (IMG:style_emoticons/default/smile.gif)

Ten post edytował ziolo 8.10.2014, 16:15:28
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: 10.10.2025 - 16:45