sir_doy Posted April 22, 2020 Share Posted April 22, 2020 (edited) Salve a tutti, è possibile estendere un controller core di prestashop (es. FrontController) in modo che un suo metodo (es. initContent) faccia altre cose oltre a quelle previste dal file core. Grazie mille in anticipo Edited April 22, 2020 by sir_doy (see edit history) 1 Link to comment Share on other sites More sharing options...
ziobudda Posted April 23, 2020 Share Posted April 23, 2020 Ciao, si chiama "override" e lo fai tramite moduli custom. M. Link to comment Share on other sites More sharing options...
fedesib Posted April 23, 2020 Share Posted April 23, 2020 Ciao, sì è possibile e come ti ha detto @ziobudda lo puoi fare scrivendo un modulo custom. In generale così: https://devdocs.prestashop.com/1.7/modules/concepts/ a seconda di cosa devi fare e "dove" devi agganciarti. Buona giornata, Federica Link to comment Share on other sites More sharing options...
sir_doy Posted April 23, 2020 Author Share Posted April 23, 2020 Facciamo l'esempio che io abbia la necessità di estendere il controller CmsController.php, allora io dentro al mio modulo creo un file dentro a /miomodulo/controllers/front chiamato nomefile.php e il nome della classe sarà questo: <MioModulo><NomeFile>ModuleFrontController, poi dentro aggiungo il mio metodo, per esempio: public function initContent() { parent::initContent(); Hook::exec('customHook'); } le mie domande quindi sono: 1) dove è che dico che sto estendendo CmsController? 2) che nome devo dare al file? 1 Link to comment Share on other sites More sharing options...
marsaldev Posted April 23, 2020 Share Posted April 23, 2020 Come già anticipato si possono effettuare override delle classi di core (e spero che scomparirà quanto prima questa cosa XD), segui la documentazione: https://devdocs.prestashop.com/1.7/modules/concepts/overrides/ Il tuo esempio è per fare fare l'override di moduli e non di controller di core 😊 1 Link to comment Share on other sites More sharing options...
sir_doy Posted April 23, 2020 Author Share Posted April 23, 2020 Grazie mille della risposta @marsaldev, ho provato la tua strada e mi funziona! ma quindi se tu avessi la necessità di estendere il funzionamento di una classe di core o comunque di un suo metodo, come lo faresti? Link to comment Share on other sites More sharing options...
marsaldev Posted April 23, 2020 Share Posted April 23, 2020 "Purtroppo" dipende dalla classe, dal metodo e da quello che vuoi ottenere 😊 Partendo dal presupposto che dovresti preferire gli hook (da utilizzare con i moduli) invece degli override, cosa devi fare di specifico in questo caso? Link to comment Share on other sites More sharing options...
sir_doy Posted April 23, 2020 Author Share Posted April 23, 2020 (edited) Ho due casi: 1) dovrei estendere la classe classes/controller/FrontController.php per assegnare dei dati ai template con smarty 2) dovrei estendere il controller controllers/front/IndexController.php anche qui per assegnare dei dati al template con smarty la strada che avrei preso io sarebbe stata quella di fare l'override e avrei scritto qualcosa tipo: public function initContent() { parent::initContent(); Hook::exec('customHook'); } dove customHook gestiva l'assign di smarty Edited April 23, 2020 by sir_doy (see edit history) Link to comment Share on other sites More sharing options...
marsaldev Posted April 23, 2020 Share Posted April 23, 2020 Ok, come supponevo penso che tu possa gestirlo con un modulo utilizzando già gli hook di base 😊 tipo l'hookHeader (o hookDisplayHeader) 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now