ahahah si lo ammetto ho scelto un caso di studio un pò particolare, così ci facciamo anche due risate xD
Comunque ti ringrazio! modX è davvero un gran sistema.
Devo ammettere che, come scritto anche nell'altro topic, ero all'oscuro delle potenzialità del Form Customization.
Come hai detto tu:
Le CRC saranno sicuramente più raffinate, e lo studio per l'implementazione delle stesse credo che spalanchi nuovi orizzonti, anche in altre situazioni, ma il tempo di sviluppo va ampiamente a loro svantaggio.
Non posso che darti ragione a riguardo. Il tempo di sviluppo è sicuramente maggiore,
o almeno lo studio di tale tecnica. Vero è anche che, almeno per quanto riguarda la mia esperienza personale, una volta capito il meccanismo e fatta un pò di pratica la rapidità di sviluppo accresce non di poco.
In realtà la creazione di un CRC che estende modResource di per se non richiede alcuno sforzo, si tratta di replicare la struttura di una modResource dandogli semplicemente una "class_key" differente e realizzando lo schema xml che dichiara tale relazione (2 righe di codice).
A parte questo lo sviluppo delle funzionalità che dovrà avere il sito web esula da tale contesto: che tu affronti le problematiche con o senza le CRC comunque sia le funzioni che elaborano le informazioni devi farle, o dentro uno snippet o dentro una classe, e il maggior tempo sottratto è quello (nulla vieta l'utilizzo di Form Customization all'interno di CRC!!).
Con l'esperienza acquisita durante lo studio e l'utilizzo delle CRC ho anche avuto modo di apprendere approfonditamente molti aspetti di modX e Xpdo, il loro funzionamento interno e le relazioni tra i vari elementi del ORM.
Non ho dubbi che ciò che ti ho elencato nel post precedente possa essere fatto anche con l'uso di plug-in e/o extra (god bless modx!!!), devo però
momentaneamente smentire l'uguaglianza che affermi nel tuo post-scritum (e spero mi smentirai nella tua prossima reply ahah):
ps.
"Un resort può contenere al suo interno solo risorse di tipo Camera (vedi figura 1) (filtraggio che non puoi fare se non con le CRC, poiché ti permettono di personalizzare il Resource Tree e le azioni applicabili su di esso)."
quando ho dovuto affrontare questo problema utilizzavo un plug-in all'evento di creazione risorsa che controllava il template della risorsa padre e in base a quella settava il template alla figlia.
Non fa una piega, ma... per quanto riguarda
la personalizzazione delle azioni (e quindi delle voci) applicabili ad una risorsa all'interno del Resource Tree? Come ti sei comportato a riguardo? non ne hai mai avuto la necessità?
Per il Content Editor tutto ruota attorno al Resource Tree, si cerca di dare massimo comfort per la sua gestione.
Se dovessi gestire io il sito dell'agenzia probabilmente molte cose non le avrei raffinate.
Ovviamente
mi esprimo sempre in relazione alle esigenze (e competenze soprattutto) di coloro che dovranno poi utilizzare il sistema. Può essere forse considerato non "necessario" dover gestire le voci e il menu del Resource Tree, ma cerco sempre di mettermi nei panni del cliente (anche del più incompetente).
In un progetto come quello dell'agenzia viaggi che ho proposto, il mio cliente si perderebbe se le voci dell'albero delle risorse risultassero tutte uguali (anche se poi con un plug-in lo reindirizzo al giusto settaggio della risorsa).
Farebbe fatica, ad esempio, a riconoscere quando creare una camera, o un resort, o un evento, o una crociera, o una cabina, etc etc. Non so se sono riuscito ad esprimere in maniera adeguata il concetto.
Si basa in maniera maggiore sul comfort e sul utilizzo "user-friendly" del back-end. E' forse uno dei principali vantaggi delle CRC (oltre ad interfacciarsi in un ambiente Object Oriented con tutti i vantaggi che ne derivano, funzionalità, portabilità, efficienza, ecc ecc).
Un altro aspetto che non mi convince del tutto riguardo l'uso di TV (o collezioni di TV con MIGX) è la parte relativa ai prezzi (o ad esempio, relativa al programma di un evento, composto da giorno,titolo,img,descrizione).
Sarà anche più complessa la realizzazione, ma la futura gestione di tali informazioni??
Eccoti un esempio a riguardo:
In alcune parti del sito è necessario mostrare il prezzo più basso disponibile in quel periodo. "A partire da 100€ al giorno all-inclusive a persona in camera doppia" oppure "A partire da 200€ weekend B&B in coppia". Come puoi notare da questi due esempi il prezzo è composto da più informazioni (quindi collezione di TV?).
Questa funzione, in sostanza, deve verificare qual'è il prezzo più basso
tra tutti i prezzi di tutte le camere di un hotel. Come affronteresti tale filtraggio in uno snippet con le TV?
Con le CRC (con lo sviluppo di
metodi delle classi, quindi con una visione totalmente O.O.) riesco agilmente a ricavare ogni tipologia di prezzo.
Mi bastano 2 funzioni (1 per la classe Resort, 1 per la Camera), con cui posso facilmente richiedere al mio hotel di darmi, ad esempio:
- il prezzo più basso di una camera X: $room->getLowestPrice()
- il prezzo più basso dell'hotel: $resort->getLowestPrice() che con un semplice foreach e un confronto di $room->getLowestPrice() mi ritorna il prezzo più basso.
- posso filtrare la tipologia di prezzo che ricerco (il più basso prezzo all-inclusive,il più basso prezzo all'interno di un range di date, il più basso prezzo solo di camere singole, ecc ecc): $room->getLowestPrice($criteria)
Come gestiresti tali richieste?
A parer mio, da questo punto di vista, guadagnano le CRC anche in fase di sviluppo, gestione e organizzazione.
Un altro vantaggio diretto che mi viene in mente è anche l'aspetto che riguarda l'inserimento delle funzionalità del front-end all'interno delle classi e non attraverso snippet; diretta conseguenza è l'assenza di gestione degli snippet nel manager di modx, o l'abuso di TV. Che gli snippet siano statici o no, il numero a volte è fastidioso, soprattutto se devi replicare tale struttura su più contesti o addirittura (come nel mio caso) su più domini con manager differenti.
E ancora, c'è un altro aspetto che sinceramente non saprei come gestire se non con le CRC: gli EVENTI.
Gli eventi sono classi particolari, sono legati ad un resort e come tali,
usufruiscono delle camere (e delle loro informazioni, compresi i prezzi) di tali resort. Come affronteresti quindi tale situazione? Replicheresti i valori TV delle Camere negli Eventi? Le camere rimangono Risorse o diventa Collezioni di TV? E i prezzi poi??e se poi uno cambia un valore nel resort deve modificarlo anche nell'evento? Risulterebbe ridondante e inefficiente, puoi smentirmi?
E' come se diverse risorse condividono altre risorse, un pò come dire che la Camera possiede più di una risorsa padre (nella realtà non è così).
E ancora, alla luce di ciò, come ti comporteresti con i prezzi delle camere?
Per ora mi fermo o metto troppa carne al fuoco
Questa conversazione si sta rivelando più utile di quanto pensassi. Spero presto che altre persone ne verranno coinvolte.
Ciao!
[ed. note: solidusite last edited this post 10 years, 6 months ago.]