Przenoszę mój stary kod do frameworka Symfony 2.2.Gdzie umieścić logikę biznesową to warstwa modelu Symfony 2?
W moim starym kodzie, moja encja Artykuł posiadał metodę getUrl(), która zwróciła URL bieżącego artykułu.
W Symfony muszę korzystać z usługi routera, aby wygenerować takie adresy URL.
Nie mogę uzyskać dostępu do routera z wnętrza jednostki, ponieważ jest to zła praktyka i nie jest obsługiwana przez framework.
Mogę wywołać router z samego szablonu Twig przy użyciu pomocnika Twig ścieżka() i podać wszystkie argumenty (z instancji artykułu) potrzebne do skonstruowania adresu URL. Ale to podejście nie jest zbyt dobre, ponieważ jeśli zdecyduję się zmienić reguły formatowania adresów URL - będę musiał znaleźć wszystkie te połączenia i je przepisać (niezbyt DRY).
Naprawdę chcę zapisać tutaj enkapsulację logiki biznesowej i nie wyciągać wszystkich odwagi do warstwy widoku.
Jak powinienem postępować w tej sytuacji?
Dzięki Arms! Myślałem o tym podejściu, po prostu potrzebowałem potwierdzenia od kogoś bardziej doświadczonego) Nie jestem pewien, czy naprawdę dobrze sobie radzę z zarządzaniem modelami z innej klasy, ale wygląda na to, że jest to realna opcja. –
Jeśli pochodzisz z ORM z Aktywnej Rekordu, to z pewnością wydaje się być obcym podejściem. Ale z biegiem czasu docenisz rozdzielenie obaw i zastanawiam się, jak sobie radziłeś wcześniej ;-) –
@SlavaFominII To jest dobre rozwiązanie, ale jeśli masz ten sam obiekt "modelowy", połącz je z tym samym Mangerem, mieć menadżera (czyli usługę) dla każdego podmiotu twojej aplikacji, a to czasami nie jest godne zaufania – DonCallisto