Vorrei creare il mio primo progetto in Yii utilizzando un modulo per il frontend ed uno per il backend, evitando di utilizzare la struttura principale dell’applicazione.
Questo per dividerli logicamente come sotto applicazioni, come suggerito dalla guida ufficiale.
Non riesco però a capire come e se devo configurare i controller e/o i componenti.
Inoltre sapete dirmi se ha senso e se ha degli svantaggi?
Spero di essere stato chiaro, ho le idee un po confuse.
Dei vantaggi ci sono. Creare un modulo isola completamente i controller, le view. Diciamo che potresti distribuire lo stesso identico software, scambiando i moduli di front-end a seconda del cliente. Ma non ne vedo il senso.
E avrai la possibilita’ di usare qualche url nativa di piu’ e scrivere delle rules di meno, il che e’ sempre una cosa buona.
Spesso si usano 2 moduli: 1 per gli utenti registrati (per gestire i propri dati, i propri annunci) e uno per gli amministratori (per gestire tutto di tutti).
La parte di frontend e’ l’unica interessata da procedure di SEO, ed e’ l’unica per la quale gli url sono importanti.
Ti do un altro input. Io cerco di sviluppare le estensioni solo come moduli. Sviluppare un modulo significa avere a che fare con molto più codice. Però anche con un maggiore “isolamento” del codice. Hai tutto li in una sola cartella e tutto quello che devi fare è caricare un modulo. Diversamente avresti controller, moduli e view sparsi per l’applicazione. Il modulo facilita il riuso del codice.
Quindi immagina di fare un modulo per le news. A quel punto, se devi fare lo stesso in un altro tuo lavoro, puoi semplicemente spostare quel modulo nell’altro sito. Fine. Magari puoi farti moduli per la view e moduli per la logica.
Io preferisco farmi diversi widget per dei pezzi di codice piu’ piccoli, ed avere un buon paio di crud generators, uno per il backend ed uno per il frontend.
Per quella che e’ la mia esperienza, tutti i siti hanno un modulo di notizie e nessuno ce l’ha uguale ad una altro, parlo anche a livello di database.
Quando mi serve un modulo news, creo la tabella nel database, genero mode, crud interno (di solito gia’ a posto out of the box) e il crud esterno, su cui bisogna applicare la grafica.
Puoi sempre crearli e poi spostarli. In ogni caso, fai attenzione a gii: mentre scrivi il nome del modulo, sulla destra dovrebbe apparire una mascherina che ti aiuta a scrivere il percorso in cui verrà salvato il model. Se non sbaglio, ti suggerisce
application.models.Model
dove Model è il nome del tuo … model =)
Se lo cambi con:
application.modules.Modulo.models.Model
dove Modulo è il nome del tuo modulo e Model il nome del tuo Model, la classe del Model verrà salvata dentro al tuo modulo.
scrivo perché ho seguito il consiglio di creare un modulo per il backend. Sembra proprio essere la soluzione migliore per ciò che devo fare: un pannello di controllo ai miei clienti per gestire i contenuti del proprio sito.
In questo modulo ho voluto inoltre dare la possibilità di gestire se utilizzare o meno i SEF url (ovvero il modulo UrlManager). In pratica, nel file di configurazione, UrlManager verrebbe caricato o meo a seconda di questo parametro. Fin qui tutto bene.
Però (e qui il mio problema) mi servirebbe fare in modo che il modulo UrlManager, nel modulo del backend, sia sempre abilitato, a differenza del frontend. Quindi la mia domanda è: come fare?
Il frontend e il backend hanno url diversi, puoi semplicemente configurare gli url come ti servono.
Mi fai un esempio di url che devi fare carino? E in generale, che senso ha fare url search engine friendly nel backend, dove i search engine non sono autorizzate?
stò iniziando a sviluppare la mia prima applicazione con Yii ma mi sono puntato sulla gestione di un modulo.
1)Ho creato tutte le pagine CRUD attraverso gii,
2)ho creato un nuovo modulo ‘backend’ con l’intenzione di buttarci dentro tutte le pagine di creazione/modifica lasciando il resto dell’applicazione accessibile a tutti gli utenti,
3)non riuscendo diversamente ho copiato le cartelle dei modelli dentro al modulo backend,
4)ho modificato il file protected/config/main.php aggiungendo :
Invece di copiare le cartelle dei modelli dentro il modulo del backend, rigenerali direttamente all’interno del modulo… in gii puoi specificare percorsi relativi anche ai moduli.