@Rushino Hai due 'app' qui: il front-end (per i lettori) e il back-end (per gli amministratori). Per ogni gruppo di funzionalità, hai un controller.
L'accesso è un gruppo di questo tipo, che include la generazione del modulo HTML (i campi, chiamando la vista) e la gestione del modulo (la convalida, la connessione con il modello). Quindi 'login' è un controller con due azioni: generateForm e handleForm.
Le pagine sono divise tra l'app front-end - che mostra solo le pagine - e l'app back-end che consente di modificarle, eliminarle, crearle e possibilmente visualizzarle in modo diverso. La homepage è almeno 'solo un'altra pagina' sul front-end, quindi rientra nel controller delle pagine. Sul backend, la sua logica potrebbe essere abbastanza diversa da giustificare un controller completamente diverso.
Per gli utenti: se gli utenti possono registrarsi, avranno bisogno di un controller front-end, ma in caso contrario, tutto ciò che ha a che fare con gli utenti va solo nel back-end.
Si noti che ciascuna delle funzioni di back-end potrebbe richiedere sia un generatore che un gestore. Queste cose possono essere suddivise in file di configurazione, tuttavia, con un plugin che è un generatore di moduli generico.
In sintesi, si presenta così:
Frontend
Pages
View, Handle
Login
View, Handle
Users
Register (note that the handler can be the same as 'create' on the backend)
Contact
View
Handle
Backend
Users
Create, Delete, Edit, Update, View
Pages
Create, Delete, Edit, Update, View