Cześć,
Tak i nie.
Generalnie do generowania sluga (zakładam, że mówisz o encjach, czyli korzystasz z Doctrine2) używa się DoctrineExtensionBundle i zachowania Sluggable. Masz jeszcze NestedSet (do generowania drzewa) i kilka innych, bardzo fajnych zachowań.
Domyślam się, że masz nie tylko klasę do do generowania slugów, więc najbardziej Symfony2 way:
1) Jeżeli chcesz wykonać jakieś operacji na encji - robisz metodę w encji, ALE TYLKO WTEDY GDY NIE POTRZEBUJESZ INNYCH ZEW. KLAS,
2) Jeżeli chcesz wykonać jakąś operację na encji, lecz potrzebujesz innej klasy do tego wtedy kod ten powinien być zadeklarowany jako usługa, manager.
Example dla punktu 1Masz koszyk (encja Cart) oraz produkty do niego dodane (CartItem). Chcesz policzyć sumaryczny koszt wszystkich produktów w koszyku. Tworzysz w encji Cart metodę getTotalNetPrice() [na przyklad] i tam robisz petle po wszysktich CartItem (oczywiscie joinujemy wtedy CartItem ;-) i dodajesz kwoty * quantity, zwracasz.
Najważniejsze jest to, że nie potrzeba Ci tutaj żadnej zewnętrznej biblioteki.
Example dla punktu 2Chcesz np. podświetlić kod PHP w ramach jakiegoś artykułu. Potrzebujesz do tego: np. encji Page oraz klasy obsługującej podświetlanie składki, parsującej content. W tym momencie potrzebujesz usługi/managera (ja wolę określenie Manager) - PageManager.
Deklarujesz go jako usługe pod aliasem np. "page.manager".
W tym momencie w kontrolerze w którym wyświetlasz / lub lepiej - edytujesz content masz cos takiego:
public function updateAction(Request $request, Page $page)
{
$this->get('page.manager')->parsePage($page);
$this->getDoctrine()->getManager()->flush($page);
// ...
}
Czyli wyciagasz logikę poza encję, po czym flush następuje z poziomu controllera / lub np. eventu, ale o tym już nie będę się rozpisywał więcej.
Nie wiem czy dostatecznie wyjaśniłem o co chodzi.
Pozdrawiam,
M.