Quali convenzioni o strutture esistono per MVVM in Perl?

4

Stiamo utilizzando Catalyst per eseguire il rendering di molte webform in quella che diventerà una grande applicazione. Non mi piace il modo in cui tutti i dati del modulo sono confusi in un grosso hash nel controller, prima di essere passati al modello. Sembra confuso e disordinato per il modello. Sono sicuro che ci sono dei veri svantaggi che non ho descritto correttamente ... Ci sono?

Una soluzione è decidere solo su una convenzione per l'hash, ad esempio:

{
  defaults => {
    type => ['a', 'b', 'c']
  },
  input => {
    type => 'a'
  },
  output => {
    message => "2 widgets found of type a",
    widgets => [ 'foo', 'bar' ]
  }
}

Un altro modo è quello di memorizzare i dati della pagina / modulo come attributi in una classe (un ViewModel?) e passare un intero oggetto al modello, che potrebbe usare in questo modo:

<p class="message">[% model.message %]<p>

[% FOREACH widget IN model.widgets %]

In che modo è più flessibile per le applicazioni di grandi dimensioni?

Esistono altre soluzioni o strutture esistenti compatibili con Catalyst?

    
posta Will Sheppard 23.03.2012 - 17:56
fonte

1 risposta

4

HTML :: FormHandler è in grado di eseguire il rendering di moduli per te, utilizzando i renderer incorporati Simple o Table. Ma non sei obbligato a usarli. Puoi scrivere il tuo o lasciarli tutti insieme (che è quello che ho fatto, anche se dubito che sia stata una buona decisione). Ho trovato che si tratta di un modulo molto flessibile (costruito con Moose). Puoi anche lasciarlo gestire salvando i dati nel database con HTML :: FormHandler :: TraitFor :: Model :: DBIC , o tira il tuo.

    
risposta data 23.03.2012 - 23:37
fonte

Leggi altre domande sui tag