Jump to content

lucmel87

Members
  • Posts

    1
  • Joined

  • Last visited

1 Follower

Profile Information

  • Activity
    Developer

lucmel87's Achievements

Newbie

Newbie (1/14)

1

Reputation

  1. Salve, scrivo questa guida in quanto non ho trovato molto sul web e spero sia utile. E' necessaria un minimo di conoscenza con db mysql e classi php. File da modificare: FRONT-END - themes/NOME_TEMA/autentication.tpl - controllers/front/AuthController.php - classes/Customer.php ADMIN - controllers/admin/AdminCustomersController.php STEP 1 – Aggiunta del campo al front end Inserire dove si desidera un campo di input nel file themes/NOME_TEMA/autentication.tpl Esempio: <p class="required text"><input name="vistisu" type="text" id="vistisu" /><label for="vistisu">{l s='Come ci hai conosciuti?'}</label></p> STEP 2 – modifica del controller che esegue la registrazione dell’utente Nel file controllers/front/AuthController.php trovare la funzione: protected function processSubmitLogin() E inserire dopo : $customer = new Customer(); questo codice: $_POST['vistisu'] =Tools::getValue(‘vistisu’); Spiegazione: la funzione processSubmitLogin() crea un utente durante la registrazione, (ricordo che ci sono 2 modi per registrarsi un prestashop: tramite registrazione semplice o durante il checkout). L’oggetto $customer una volta inizializzato dovrà ricevere il parametro del campo che abbiamo creato. Inizializzando una variabile in $_POST attraverso la classe statica Tools con getValue(‘nome_campo_creato’) andiamo a prendere il testo che è stato scritto nell’input box con lo stesso name passato. Ora inseriamo il campo anche per la funzione che crea l’account durante il checkout: troviamo la funzione protected function processSubmitAccount() e inseriamo $customer->vistisu = $_POST[‘vistisu’]; All’interno dell’istruzione: if (!count($this->errors)) Spiegazione: la funzione crea un account durante la fase di checkout. L’istruzione if(!count($this->errors)) verifica che non ci siano errori prima di eseguire la creazione ($customer->add()). L’istruzione che abbiamo inserito andrà a popolare una variabile pubblica della classe customers in modo da registrarla all’interno del database. STEP 3 – Creazione del campo nel DB Eseguiamo questa SQL direttamente dal nostro database: ALTER TABLE `PREFISSO_TBL_customer` ADD `vistisu` VARCHAR( 256 ) Sostituiamo PREFISSO_TBL con il prefisso della nostra tabella e assicuriamoci che il campo creato di default sia NULL. STEP 4 – Creiamo la variabile ‘vistisu’ nella classe Customer Apriamo il file classes/Customer.php e inseriamo subito dopo l’apertura della classe: public $vistisu; poi troviamo la variabile statica: public static $definition = array(…. E aggiungiamogli: 'foundus' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'size' => 256), nella posizione esatta dove si trova il campo vistisu che abbiamo creato prima nella tabella (solitamente ultima posizione). Avremo qualcosa del genere: …. 'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'copy_post' => false), 'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'copy_post' => false), 'vistisu' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'size' => 256), ), ); Spiegazione: Aggiungiamo la variabile $vistisu alla classe customers per far si che prenda il valore che inseriamo nell’input di testo da front-end. L’inserimento della stringa nella variabile statica $definition ci permette di andare a scrivere nel DB attraverso una funzione SQL di prestashop. TYPE_STRING indica che è una stringa, ‘isString’ è un controllo per verificare che il contenuto del campo input che abbiamo creato sia una stringa e size=> indica la lunghezza massima che abbiamo definito al campo vistisu nel DB. ULTIMO STEP – Creazione campo nel back end sezione “Clienti” Apriamo il file: Controllers/admin/AdminCustomersController.php Cerchiamo $this->fields_list = array(… Aggiungiamo: ‘vistisu’ => array( 'title' => $this->l('Come ci conosce?'), 'width' => 70, ), Appena dopo una qualsiasi chiusura ), del campo. In questo modo nella tab clienti dell’admin ci apparira la classica tabella con tutti i nomi degli utenti registrati e la colonna “Come ci conosce?” nella posizione dove l’abbiamo inserita. Più o meno è quello che ho fatto io.
×
×
  • Create New...