Devo strutturare / elaborare i dati per una vista in un'architettura MVC?

1

Ho una vista che esegue il rendering di un menu. Queste voci di menu sono dinamiche, in quanto appaiono solo in base a determinate condizioni (ad esempio l'autorizzazione).

Ho due opzioni:

  1. Codifica il menu nella vista con tutti i condizionali necessari
  2. Struttura e filtro dei dati al di fuori della vista, quindi la visualizzazione è responsabile solo della visualizzazione di una serie di azioni.

L'opzione 2 sembra essere più elegante per me, ma questo sembra avere il costo di aumentare le dimensioni del controller e non sembra debba essere la responsabilità del controller.

Quindi, le mie domande sono:

  1. I dati di strutturazione per la pratica standard di visualizzazione?
  2. Dove dovrebbe vivere la strutturazione di questi dati? Ho preso in considerazione l'utilizzo di un metodo di supporto (importato dal modulo), un oggetto di servizio o solo un metodo privato all'interno del controller, non è chiaro per me quale sarebbe meglio.

Oltre a rispondere alle domande di cui sopra, apprezzerei qualsiasi idea su come affrontare questi tipi di problemi concettuali.

Per quello che vale, il framework MVC che sto utilizzando è rails.

    
posta cgat 16.02.2018 - 00:22
fonte

2 risposte

3

Preferisco inserire la minore logica possibile nelle mie opinioni. Sì, questo aumenta le dimensioni del controller, ma puoi neutralizzarlo suddividendolo in più metodi, funzioni o classi, come hai detto. Personalmente non metterei questo codice in un oggetto di servizio. È compito del controllore prendere i dati dal modello e trasformarlo in modo che sia più semplice da visualizzare per la visualizzazione.

    
risposta data 16.02.2018 - 04:12
fonte
1

I have two options:

  • Hard code the menu in the view with all the necessary conditionals
  • Structure and filter data outside of the view so the view is only responsible for displaying an array of actions.

Le persone che scrivono le opinioni sono anche le persone che fanno il layout. Quando il tuo team cresce, tendi a vedere altri sviluppatori visivamente specializzati in quel ruolo. Non vuoi che scrivano la logica del business, onestamente. Sono molto più utili per scrivere jquery, css, ecc. La loro attenzione dovrebbe rendere la pagina bella. Gli sviluppatori di back-end dovrebbero consegnare loro un elenco pulito, utile, pre-filtrato e pre-ordinato, calcolato nel controller (o nel livello di servizio se ne hai uno) e memorizzato nel modello. La persona che scrive la vista dovrebbe solo preoccuparsi di inserire i tag nel posto giusto, o al massimo scrivere un semplice ciclo foreach .

Is structuring data for the view standard practice?

Sì, questo è lo scopo del modello.

Where should the structuring of this data live?

Il modello

I've considered using a helper method (imported from module), a service object, or just a private method within the controller, it's just not clear to me which would be better.

Utilizza il modello

Beyond just answering the above questions, I would appreciate any insights in how to approach these types of conceptual issues.

Leggi la sigla

    
risposta data 17.02.2018 - 12:19
fonte

Leggi altre domande sui tag