Memorizzazione Modulo di configurazione
Introduzione
Nella terza parte di questa serie vedremo come si possa immagazzinare i dati di configurazione per i nostri moduli del database Prestashop, e come possiamo consentire agli utenti di interagire con questi dati per controllare il comportamento del modulo. Verranno inoltre brevemente su come possiamo generare output dal nostro modulo di fornire un feedback visivo delle modifiche di configurazione.
Gestione delle impostazioni utente
Andiamo a chiamare questo modulo "TutorialSecond" così abbiamo di nuovo bisogno di creare una nuova directory modulo e file di classe - che sarà denominata "tutorialsecond" e "tutorialsecond.php" rispettivamente. Il file di classe (tutorialsecond.php) deve contenere i seguenti elementi:
<? Php
classe Tutorialsecond estende Module
(
privato _html $ ='';
funzione __construct ()
(
$ This-> name = 'tutorialsecond';
parent:: __construct ();
$ This-> tab = '' Tutorial eCartService.net;
$ This-> version = '0 .1.0 ';
$ This-> displayName = $ l this-> ('Seconda Tutorial Module');
$ This-> description = $ l this-> ('Il nostro secondo modulo - Un "Ciao mondo" Redux');
)
getContentQ funzione pubblica ()
(
)
funzione _displayForm privato ()
(
)
)
/ / Fine: tutorialsecond.php Si noterà che abbiamo implementato due funzioni nuovo membro:: getContentQ () e:: _displayForm (). Se si carica il file sul server e installare questo modulo in questa fase si dovrebbe vedere una nuova opzione nella lista moduli schermo per 'Second Tutorial Module'. Ci sarà ora un link ">> Configura nella voce del modulo, anche se clic su di essa si limiterà a restituire una pagina vuota Back Office. La presenza del:: getContentQ () funzione di membro è responsabile di questo in quanto fornisce l'interfaccia tra il nostro modulo e il back office.
In aggiunta a queste due nuove funzioni, abbiamo aggiunto anche la variabile $ _html membro private, che useremo nel seguito di questo articolo per costruire la produzione richiesto per la visualizzazione nel back office.
Archiviare e recuperare dati di configurazione
Prestashop fornisce una "classe" di configurazione che offre diverse funzioni di membro di manipolare i dati di configurazione, ma le due funzioni chiave che saranno più comunemente utilizzati sono:
Configurazione:: updateValue ($ chiave, $ valore, $ html = false);
Configurazione:: get ($ chiave, $ id_lang = NULL);
La configurazione:: updateValue () funzione ci permette di memorizzare una opzione di configurazione del database (a scelta in più lingue, nel qual caso il parametro $ valori saranno un array) e la configurazione:: get () funzione ci permette di recuperare i dati di configurazione per una lingua predefinita selezionata o negozio. Noi ignorerà i parametri che hanno valori di default per ora, ma rivedere il parametro $ html nella configurazione:: updateValue () nel prossimo articolo, quando si guarda l'oggetto di validazione dei form.
Attuazione del Configurazione dello schermo
Nel nostro file sorgente abbiamo creato un privato _displayForm funzione membro (). Ciò è del tutto opzionale, come tutto il codice di interfaccia potrebbe essere inserito nel getContentQ () funzione membro, tuttavia è altamente raccomandato che vi separano questo fuori per motivi di manutenzione del codice più semplice. Creeremo una semplice forma all'interno di questa funzione da con cui possiamo acquisire l'input proprietario di un negozio.
funzione _displayForm privato ()
(
$ This-> _html .= '
<form action="'.$_SERVER['REQUEST_URI'].'" method="POST">
<label> '. $ this-> l (' Messaggio al mondo').'</ label>
<div class="margin-form">
<input type="text" name="our_message" />
</ Div>
<input type="submit" name="submit" l value="'.$this-> ('Aggiorna classe').'" = "button" />
</ Form> ';
) Si può vedere che il:: _displayForm () funzione aggiunge semplicemente standard codice html modulo per la nostra variabile $ _html membro, con l'obiettivo di formare sia $ _SERVER ['REQUEST_URI']. Prestashop's Back Office architettura sarà presente al nostro percorso:: funzione membro classe getContentQ per noi da gestire quando il modulo viene inviato.
Abbiamo bisogno di aggiungere accanto al nostro codice:: getContentQ () per visualizzare in realtà la forma e gestire l'invio del modulo.
getContentQ funzione pubblica ()
(
if (Strumenti:: isSubmit ('submit'))
(
Configurazione:: updateValue ($ this-> nome '_message.', Strumenti:: getValue ('our_message'));
)
$ This-> _displayForm ();
return $ this-> _html;
) Il:: getContentQ () utilizza un altro prima classe Prestashop "Strumenti" per verificare se ci sono la gestione dell'azione post dal modulo, o se questa funzione viene chiamata in un altro modo ovvero un clic su "Configura" link nel modulo lista - il parametro è il nome che abbiamo dato al nostro pulsante "Update" nel modulo.
Se la funzione è stata chiamata direttamente dal Back Office (nel qual caso Strumenti:: isSubmit ('submit') restituirà false), allora chiamiamo il modulo di rendering funzione che abbiamo creato in precedenza e restituire l'output, catturato in $ this- > _html variabile, per il Back Office per la visualizzazione.
Se la funzione è chiamata a causa della nostra forma di essere pubblicati, quindi siamo in grado di memorizzare il nostro parametro di configurazione nel database con il valore inserito nel nostro modulo. Siamo di nuovo utilizzare la classe Tools per ottenere il valore della variabile form utilizzando la chiamata al Strumenti:: getValue ('our_message'), dove 'our_message' è il nome del campo di input in nostro modulo.
Si può vedere che ho aggiunto il nome del nostro modulo per l'inizio del nome dell'elemento di configurazione - questa è di garantire che la chiave di configurazione è unica come lo spazio dei nomi per queste chiavi è condivisa per l'intero negozio.
Una volta che abbiamo memorizzato i nostri dati di configurazione del modulo è di nuovo visualizzato, pronto per l'ingresso di più se necessario.
Modulo di uscita in una pagina
Ora abbiamo un metodo di cattura input da the proprietario del negozio e del risparmio in the database, quindi il passo successivo ovvia sarebbe quella di fargli qualcosa con eg display su una pagina. Nella parte 1 della serie abbiamo parlato di "ganci" in relazione a moduli di aggiungere funzionalità. Per poter utilizzare questo abbiamo bisogno di dire che il nostro modulo PrestaShop vorrebbe agganciare in front office e lo facciamo utilizzando la seguente funzione (definita nella classe di base del modulo):
$ This-> registerHook ($ hook_name);
Il parametro $ hook_name si riferisce a uno dei diversi punti che il nucleo Prestashop consente ai moduli di uscita dell'inserto e / o elaborazione dei dati, ma per ora useremo uno in particolare - "leftColumn ', che ci consente di aggiungere contenuti nella colonna di sinistra di tutte le pagine. Per inizializzare il gancio bisogna aggiungere i seguenti nuovi override in nostra classe:
pubblica funzione installare ()
(
parent:: install ();
if ($ this-> registerHook ('leftColumn'))
return false;
) Questo dice Prestashop per eseguire il nostro gancio modulo quando è il rendering del contenuto per la colonna di sinistra di tutte le pagine. Siamo accanto bisogno di aggiungere una funzione per gestire il callback gancio. La convenzione è per il nome della funzione come il nome di Hook preceduto da "gancio":
hookLeftColumn funzione pubblica ()
(
<div ritorno 'class="block"> <h4>'. Configurazione:: get ($ this-> nome '_message.'). '</ H4> </ div>';
)
Nel nostro semplice esempio ci sono solo confezionamento nostro parametro di configurazione, in alcuni markup HTML standard in modo che sia visualizzato correttamente sulla nostra pagina.
Se avete già installato il modulo che si dovrebbe disinstallare e reinstallare a garantire che il gancio è correttamente registrato con il nucleo Prestashop. Ora è possibile immettere un valore nella schermata di configurazione per il modulo - ad esempio 'Ciao Mondo', e sarà la produzione che l'intestazione di una casella nella colonna di sinistra del tuo negozio. Il codice completo per il secondo esempio dovrebbe apparire come:
<? Php
classe Tutorialsecond estende Module
(
privato _html $ ='';
funzione __construct ()
(
$ This-> name = 'tutorialsecond';
parent:: __construct ();
$ This-> tab = '' Tutorial eCartService.net;
$ This-> version = '0 .1.0 ';
$ This-> displayName = $ l this-> ('Seconda Tutorial Module');
$ This-> description = $ l this-> ('Il nostro secondo modulo - Un "Ciao mondo" Redux');
)
pubblica funzione installare ()
(
parent:: install ();
if ($ this-> registerHook ('leftColumn'))
return false;
)
getContentQ funzione pubblica ()
(
if (Strumenti:: isSubmit ('submit'))
(
Configurazione:: updateValue ($ this-> nome '_message.', Strumenti:: getValue ('our_message'));
)
$ This-> _displayForm ();
return $ this-> _html;
)
funzione _displayForm privato ()
(
$ This-> _html .= '
<form action="'.$_SERVER['REQUEST_URI'].'" method="POST">
<label> '. $ this-> l (' Messaggio al mondo').'</ label>
<div class="margin-form">
<input type="text" name="our_message" />
</ Div>
<input type="submit" name="submit" l value="'.$this-> ('Aggiorna classe').'" = "button" />
</ Form> ';
)
hookLeftColumn funzione pubblica ()
(
<div ritorno 'class="block"> <h4>'. Configurazione:: get ($ this-> nome '_message.'). '</ H4> </ div>';
)
)
/ / Fine: tutorialsecond.php Riassunto
In questo articolo abbiamo esteso il nostro primo modulo di un modulo di configurazione di base e hanno utilizzato una funzione di hook per visualizzare l'output del nostro modulo nella colonna di sinistra delle nostre pagine. Nella parte successiva di questa serie vedremo a migliorare l'impianto di configurazione in qualcosa che potrebbe essere utilizzato in una reale attuazione del modulo. Ciò comprende la convalida dell'input dell'utente per la forma, il pre-compilazione dei campi modulo a seconda dei casi in base alla configurazione corrente e la visualizzazione di errori di modulo e le avvertenze contenute nelle schermate di back office.