Questa è una domanda di architettura / design che mi è venuta in mente quando ho confrontato le attuali pratiche MVC in PHP con lo sviluppo basato su componenti in Javascript.
La mia domanda è:
Perché la vista (o parti della vista) non definisce quali dati dovrebbero essere usati per visualizzarlo?
Sembra essere una pratica comune in MVC Frameworks lasciare che il controller definisca i dati necessari alla vista. Per me questo crea un accoppiamento inutilmente tra il controller e la vista.
Quando la libreria della vista ha la possibilità di chiamare le funzioni (ramoscello per esempio) che recuperano le strutture dati necessarie, perché non sarebbe preferibile? Il controllore dovrebbe solo sapere quale vista radice rendere e parti della vista funzionerebbero quindi con il modello per leggere i dati necessari per il rendering stesso. Vedo i seguenti vantaggi:
- I controllori diventano più semplici poiché non aggregano i dati prima di visualizzare la vista
- Le strutture dati inutilizzate passate alla vista si sarebbero verificate molto meno
- Riutilizzare parti della vista (modelli) sarebbe anche più facile in quanto non dipendono dal rendering del controller per renderlo più
Ovviamente quando si cambiano i dati la logica rimane nel controller, ma mi riferisco solo alla lettura dei dati per visualizzare l'interfaccia utente. Alcuni dati (ad esempio dopo l'invio di un modulo) devono ancora essere passati alla vista dal controller, ma la maggior parte di essi potrebbe essere inserita in componenti di renderizzazione indipendenti.
Vedi qualche svantaggio di questo approccio? Hai già provato qualcosa di simile a questo con un framework MVC?