perché utilizzare un oggetto modulo quando è possibile ottenere i dati necessari dall'html dell'oggetto view?

-1

Sto lavorando con il codice lato server.

Ho un oggetto richiesta che gestisce la convalida e il filtraggio dei dati della richiesta.

Ho un oggetto vista che usa i file modello per generare html per l'output. i file modello sono per lo più html. puoi mettere un oggetto vista all'interno di un altro oggetto vista per assemblare un pezzo di pagina con un peice. ad esempio potresti avere una vista del layout di pagina e potresti inserire una vista modulo nella vista del layout di pagina.

Una delle caratteristiche dell'oggetto richiesta è che può generare automaticamente convalide utilizzando una stringa html5 contenente un modulo. Analizza la stringa html e afferra i tipi di input e altri attributi di tag che determinano la convalida HTML5, quindi corrisponde a questo lato del server di convalida. Prendo questa stringa html da un oggetto vista. In questo modo, indipendentemente dal modo in cui il designer inserisce il file di modello della vista, verrà automaticamente convalidato in base al lato server degli attributi html5.

creo e utilizzo la stessa vista originariamente utilizzata per generare la pagina, per creare convalide per la richiesta quando la pagina viene quindi rispedita al server.

Vorrei ricevere feedback su questa idea. Pro / Contro / Altre preoccupazioni.

    
posta dqhendricks 30.09.2011 - 23:55
fonte

2 risposte

2

Non ho ancora idea del motivo per cui sei insistente nell'analisi dell'HTML (che si tratti di un modello o meno). È solo un cattivo design (imho). Il modello è il pezzo di presentazione, che il modello (o apparentemente il modello di visualizzazione in questo caso) non dovrebbe sapere nulla. Analizzando l'HTML, stai introducendo l'accoppiamento stretto inutilmente.

Se l'intento è quello di facilitare il lavoro dei designer (non ho idea del motivo per cui i designer stanno lavorando con codice, HTML / CSS o meno), quindi lascia che si attengano alla scrittura dei modelli. Ma , devi anche creare un file (forse JSON?) che contenga le meta informazioni su ciascuna vista. Quando vengono eseguite le routine di convalida, tutto ciò che devono fare è controllare i meta dati con i dati di POST e convalidarli di conseguenza.

Ad esempio:

Template:

<form action="/accounts/create" method="POST">
<!-- other stuff here -->
<input type="text" name="fname" />
<input type="text" name="bdate" />
<!-- other stuff here -->
</form>

Meta-dati JSON:

{
    "action": {
        "url": "/accounts/create",
        "inputs": {
            "fname": {
                "type": "text",
                "maxlen": 25
            },
            "bdate": {
                "type": "date"
            }
        }
    }
}

Ora, avrai il codice PHP che otterrà l'URL dalla richiesta, lo abbinerà a una specifica entità JSON ed eseguirà tutte le routine di convalida che desideri su di essa.

Che cosa ottieni da questo?

  1. È facile. È leggibile.
  2. Scrivere uno strumento per automatizzare la creazione di JSON dovrebbe essere banale (se vuoi davvero , qui dove puoi analizzare il modello per generare i meta-dati).
  3. Non c'è parsing da fare (a parte il colpo iniziale che dovrai prendere per analizzare il JSON, che è miles migliore di quello dell'analisi di HTML, specialmente durante una risposta ).
  4. Separa il livello di presentazione dalla logica di visualizzazione . È possibile trasformare il modello in un rendering di template jQuery basato sul client e non importa. Tutto ciò che conta è che i nomi degli elementi del modulo corrispondano a quelli del JSON.

È molto probabile che farei qualcosa del genere.

    
risposta data 01.10.2011 - 06:14
fonte
1

Nella categoria "altre preoccupazioni", le prime 4 parole, "Sto costruendo un framework" sono in realtà una bandiera rossa. "Framework" non è ben definito abbastanza da poter essere sicuro di cosa intendi, ma generalmente vuoi una libreria o un toolkit più di un framework. Il framework di solito implica che se lo si usa, allora si deve fare tutto al suo interno, il che significa che non si può usare anche il framework di qualcun altro, o fare cose per cui il framework non è stato progettato. Se è così, è meglio che sia un veramente buon framework, il che significa che probabilmente non vale la pena di scriverlo.

Ovviamente ciò che stai scrivendo potrebbe anche essere più una libreria che un framework, quindi è solo qualcosa su cui riflettere.

Per quanto riguarda le specifiche, se il tuo oggetto vista è sul lato server e non proveniente dal browser non è male, anche se io veramente non ho idea del perché sarebbe una stringa HTML5 (che Presumo sia una stringa che analizza come HTML5 valido?). In questo caso, HTML5 è orribile da analizzare e apparentemente inutile, quindi dovresti inviare un oggetto (ad esempio, l'oggetto vista, forse).

Non ho idea di cosa intendi per designer: è una classe o un essere umano?

Penso che sia umano, nel qual caso Demian Brecht ha ragione. Suppongo che se la validazione non è in alcun modo per la sicurezza e davvero non ti importa se gli utenti aggirano le regole di convalida, allora non è poi così male, ma devi comunque analizzare HTML5. In tal caso è meglio avere una libreria a portata di mano - per favore oh per favore non usare espressioni regolari. E potrebbe essere ancora più difficile rispetto all'utilizzo di un modulo: esiste un motivo per cui non stai utilizzando un modulo?

Inoltre, pensa a quanto sarà difficile aggiungere la convalida se hai bisogno di qualcosa che non è stato risolto da HTML5.

Potresti ottenere risposte migliori se spieghi perché stai facendo ciò che stai facendo (e più chiaro su cosa ).

    
risposta data 01.10.2011 - 01:03
fonte

Leggi altre domande sui tag