lemoeb Posted September 24, 2019 Share Posted September 24, 2019 (edited) Devo modificare il reindirizzamento dopo la registrazione di un cliente. Nel modulo che sto scrivendo, intercetto correttamente ActionCustomerAccountAdd Hook ed eseguo le operazioni necessarie al mio modulo. Tuttavia, vorrei vedere il mio file .tpl e non il file prestashop predefinito. Ho provato a usare Tools :: redirect ma non ho ottenuto nulla. Suggerimenti su come farlo? Grazie in anticipo Il mio codice: public function hookActionCustomerAccountAdd($param) { Tools::redirect('views/templates/front/confirm.tpl'); } P.S. Dopo aver effettuato la registrazione (poiché disabilito l'attivazione automatica del client) torno alla schermata di registrazione stessa (come nella figura), vorrei evitarlo e fare in modo che un cliente veda un mio messaggio specifico. Grazie in anticipo Edited September 27, 2019 by lemoeb (see edit history) Link to comment Share on other sites More sharing options...
fedesib Posted September 25, 2019 Share Posted September 25, 2019 Ciao, invece del redirect, puoi provare a mettere nella tua funzione una cosa di questo tipo: return $this->fetch($this->templateFile, $this->getCacheId('tuo_template')); dove $this->templateFile è da dichiarare nella funzione __construct() del tuo modulo in questo modo: $this->templateFile = 'module:tuo_modulo/tuo_template.tpl'; Buona giornata, Federica Link to comment Share on other sites More sharing options...
lemoeb Posted September 25, 2019 Author Share Posted September 25, 2019 Ciao Federica, ho provato la soluzione che mi hai indicato ma non risolvo il problema. Il mio tpl è il seguente : {extends file='page.tpl'} {block name='page_content_top'} <div class="panel"> <H1>Attesa conferma</H1> lorem ipsum dolor </div> {/block} seguendo quanto mi hai detto ho inserito il seguente codice nel __constrct del modulo : $this->templateFile = 'module:cremailconfirm/views/templates/front/confirm.tpl'; e nella mia funzione : public function hookActionCustomerAccountAdd($param) { $sql="UPDATE `". _DB_PREFIX_ ."customer` SET active=0"; Db::getInstance()->execute($sql); return $this->fetch($this->templateFile, $this->getCacheId('confirm.tpl')); } dopo aver fatto tutto questo ricevo il seguente errore : (1/1) ContextErrorException Notice: Undefined index: layout in 97d2ad90ef4e2f8689ecd37516a19e4456273929_2.file.page.tpl.php line 33 at content_5d8bb8a7558c26_81370497(object(SmartyDevTemplate))in smarty_template_resource_base.php line 123 at Smarty_Template_Resource_Base->getRenderedTemplateCode(object(SmartyDevTemplate))in smarty_template_compiled.php line 114 at Smarty_Template_Compiled->render(object(SmartyDevTemplate))in smarty_internal_template.php line 216 at Smarty_Internal_Template->render()in smarty_internal_template.php line 385 at Smarty_Internal_Template->_subTemplateRender('page.tpl', 'confirm.tpl|1|1|10', null, 0, 3600, array(), 2, false, null, null)in smarty_internal_runtime_inheritance.php line 125 at Smarty_Internal_Runtime_Inheritance->endChild(object(SmartyDevTemplate), 'page.tpl')in 1becd3be2235e42d4d4ddda2abcf592fb9a58533_2.module.cremailconfirmviewstempla.php line 34 at content_5d8bb8a753c712_76239631(object(SmartyDevTemplate))in smarty_template_resource_base.php line 123 at Smarty_Template_Resource_Base->getRenderedTemplateCode(object(SmartyDevTemplate))in smarty_template_compiled.php line 114 at Smarty_Template_Compiled->render(object(SmartyDevTemplate))in smarty_internal_template.php line 216 at Smarty_Internal_Template->render(false, 0)in smarty_internal_templatebase.php line 232 at Smarty_Internal_TemplateBase->_execute(object(SmartyDevTemplate), null, null, null, 0)in smarty_internal_templatebase.php line 116 at Smarty_Internal_TemplateBase->fetch(null, null, null, null, false, true, false)in SmartyDevTemplate.php line 40 at SmartyDevTemplateCore->fetch()in Module.php line 2447 at ModuleCore->fetch('module:cremailconfirm/views/templates/front/confirm.tpl', 'confirm.tpl|1|1|10')in cremailconfirm.php line 287 at Cremailconfirm->hookActionCustomerAccountAdd(array('newCustomer' => object(Customer), 'cookie' => object(Cookie), 'cart' => object(Cart), 'altern' => 5))in Hook.php line 970 at HookCore::coreCallHook(object(Cremailconfirm), 'hookactionCustomerAccountAdd', array('newCustomer' => object(Customer), 'cookie' => object(Cookie), 'cart' => object(Cart), 'altern' => 5))in Hook.php line 355 at HookCore::callHookOn(object(Cremailconfirm), 'actionCustomerAccountAdd', array('newCustomer' => object(Customer), 'cookie' => object(Cookie), 'cart' => object(Cart), 'altern' => 5))in Hook.php line 907 at HookCore::exec('actionCustomerAccountAdd', array('newCustomer' => object(Customer), 'cookie' => object(Cookie), 'cart' => object(Cart), 'altern' => 5))in CustomerPersister.php line 202 at CustomerPersisterCore->create(object(Customer), 'pippo1234')in CustomerPersister.php line 59 at CustomerPersisterCore->save(object(Customer), 'pippo1234', null, true)in CustomerForm.php line 196 at CustomerFormCore->submit()in AuthController.php line 60 at AuthControllerCore->initContent()in Controller.php line 291 at ControllerCore->run()in Dispatcher.php line 515 at DispatcherCore->dispatch()in index.php line 28 Suggerimenti a riguardo? Grazie Link to comment Share on other sites More sharing options...
fedesib Posted September 26, 2019 Share Posted September 26, 2019 Ciao, suggerimento 1: 15 hours ago, lemoeb said: $this->getCacheId('confirm.tpl')); dovresti togliere .tpl, ci va solo 'confirm' suggerimento 2: 15 hours ago, lemoeb said: Notice: Undefined index: layout mi sa che c'è qualche problema nel template. Prova a mettere nel template solo un semplice <div> senza usare nulla di Smarty e senza estendere nessun template e vedere se viene visualizzato correttamente. Buona giornata, Federica Link to comment Share on other sites More sharing options...
lemoeb Posted September 26, 2019 Author Share Posted September 26, 2019 (edited) Ciao Federica, ho fatto come mi hai detto ma non funziona. L'errore non lo presenta più ma sono ritornato al punto di partenza. Mi spiego meglio : Ho fatto tutte le moifiche e rimosso i vari extend nel template che ho fatto io che ora si presenta così : <div class="panel"> <H1>Attesa conferma</H1> lorem ipsum dolor </div> Non accade nessun redirect o presentazione di Template, in pratica mi ritorna alla form di registrazione. Questo credo che dipenda dal fatto che con il mio controller intervengo proprio sulla registrazione. In questo hook : public function hookActionCustomerAccountAdd($param) { $sql="UPDATE `". _DB_PREFIX_ ."customer` SET active=0"; Db::getInstance()->execute($sql); return $this->fetch($this->templateFile, $this->getCacheId('confirm')); } Che viene chiamato dopo la registrazione, come puoi vedere imposto lo stato dell'utente a 0. Il sistema che fa redirect verso (credo la pagina di account del cliente) non trovado lo stato a 1 ripresenta la form di registrazione. Quello che vorrei io è che la form di registrazione non venga ripresentata, ma al suo posto dovrebbe apparire la pagina che ho scritto io. In parte con Tools::redirect ho risolto, nel senso che presenta il mio template ma l'utente risulta loggato anche se questo non è vero e se si clicca sul nome utente (in alto a destra) o in qualsiasi altra parte dello shop (vedi il menu) non succede nulla a parte il rimuovere l'utente come loggato ed è quindi necessario effettuare almeno due operazioni prima di poter accedere correttamente allo shop. Spero di essere stato il più chiaro possibile. Ti ringrazio anticipatamente per il tuo supporto. Leandro Edited September 26, 2019 by lemoeb (see edit history) Link to comment Share on other sites More sharing options...
fedesib Posted September 27, 2019 Share Posted September 27, 2019 Ciao, ok è più chiaro. Io proverei a forzare il logout dell'utente prima del redirect. Una cosa tipo $this->context->cookie->logout(); (devi guardare prima che info hai in $this->context, potrebbe essere $this->context->customer->logout()) oppure $customer->logout(); se hai un'istanza di $customer nel tuo modulo. Spero di essere stata d'aiuto, Federica Link to comment Share on other sites More sharing options...
lemoeb Posted September 27, 2019 Author Share Posted September 27, 2019 ******* GRANDE FEDERICA! ******* Grazie ai tuoi consigli ho raggiunto l'obiettivo. Alla fine dopo il logout, per poter rispettare il layout della pagina ho sfruttato Tools:redirect ma comunque il primo obiettivo l'ho raggiunto. Ora proseguo, speriamo di non trovare ulteriori intoppi. Grazie di nuovo Leandro Link to comment Share on other sites More sharing options...
fedesib Posted September 30, 2019 Share Posted September 30, 2019 Ciao Leandro, bene! Sono contenta che tu abbia risolto 👍 Buon proseguimento con il tuo modulo! Buona giornata, Federica 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