Sto spostando la mia vecchia base di codice nel framework Symfony 2.2.Dove posizionare la logica aziendale è il livello di modello di Symfony 2?
Nel mio vecchio codice, la mia entità articolo ha avuto un metodo getUrl(), che restituiva un URL per l'articolo corrente.
In Symfony devo utilizzare il servizio Router per generare tali URL.
Non riesco ad accedere al router dall'entità, perché è una cattiva pratica e non è realmente supportata dal framework.
Posso chiamare il router dal modello Twig stesso utilizzando Twig helper path() e fornire tutti gli argomenti (dall'istanza Article) necessari per costruire l'URL. Ma questo approccio non è molto buono, perché se deciderò di cambiare le regole di formattazione degli URL - dovrò trovare tutte queste chiamate e riscriverle (non molto DRY).
Voglio davvero salvare l'incapsulamento della logica di business qui e non tirare tutte le viscere al livello vista.
Come devo procedere in questa situazione?
Grazie Arms! Stavo pensando a questo approccio, avevo solo bisogno di una conferma da parte di qualcuno più esperto) Non sono sicuro di essere davvero a mio agio nel gestire le entità modello da qualche altra classe, ma sembra che questa sia solo un'opzione praticabile. –
Se provieni da un ORM attivo, questo sembra decisamente un approccio estraneo. Ma col tempo apprezzerai la separazione delle preoccupazioni e ti meraviglierai di come sei mai stato prima ;-) –
@SlavaFominII Questa è una buona soluzione, ma se hai lo stesso oggetto "modello", raggruppali nello stesso presepe o avere un manager (quindi un servizio) per ogni entità della tua applicazione e questo, a volte, non è opportuno – DonCallisto