Ukládání konfigurace modulu
Úvod
Ve třetí části tohoto seriálu se podíváme na to, jak můžeme ukládat konfigurační data pro naše moduly v databázi Prestashop, a jak můžeme umožnit uživatelům interakci s tato data k ovládání modulu chování. Budeme také stručně se dotýkají jak můžeme generovat výstup z našeho modulu poskytnout vizuální zpětnou vazbu na změny v konfiguraci.
Správa uživatelských nastavení
Budeme volat tento modul "TutorialSecond", takže jsme opět potřeba vytvořit nový modul adresář a třídě soubor - který bude mít název "tutorialsecond" a "tutorialsecond.php", resp. Třída soubor (tutorialsecond.php) by měl obsahovat následující:
<? Php
třída Tutorialsecond rozšiřuje modul
(
soukromé $ _html ='';
Funkce __construct ()
(
$ This-> name = 'tutorialsecond';
rodiče:: __construct ();
$ This-> karta = '' eCartService.net Návody;
$ This-> version = "0 .1.0 ';
$ This-> displayName = $ this-> l ('druhá výuka modulu');
$ This-> popis = $ this-> l ('Náš druhý modul - "Hello world" Redux');
)
veřejné funkce getContent ()
(
)
soukromé funkce _displayForm ()
(
)
)
/ / Konec: tutorialsecond.php Všimněte si, že jsme zavedli dva nové členské funkce:: getContent () a:: _displayForm (). Pokud nahrajete soubor na server a nainstalovat tento modul v této fázi byste měli vidět novou možnost na modulech obrazovce seznamu pro 'druhé výuka modulu'. Tam bude nyní ">> Konfigurovat" odkaz v modulu vstupu, i když kliknete, bude to pouze vrátí prázdnou stránku Back Office. Přítomnost:: getContent () členskou funkci je zodpovědný za to, protože poskytuje rozhraní mezi našimi modul a Back Office.
Kromě těchto dvou nových funkcí také jsme přidali $ _html soukromé členské proměnné, které budeme používat dále v tomto článku k vybudování potřebných výstup pro zobrazení v Back Office.
Ukládání a načítání konfiguračních dat
Prestashop poskytuje "Konfigurace" třídy, která nabízí několik členských funkcí pro manipulaci s konfigurační data, ale dvě klíčové funkce, které budou nejčastěji používané jsou:
Konfigurace:: updateValue ($ key, $ hodnoty, $ html = false);
Konfigurace:: get ($ key, $ id_lang = NULL);
Konfigurace:: updateValue () funkce nám umožňuje uložit konfigurační volby v databázi (volitelně ve více jazycích, ve kterých případech $ hodnoty parametru bude pole) a konfigurace:: get () funkce nám umožňuje načíst konfigurační data pro vybrané nebo ukládat výchozí jazyk. Budeme ignorovat parametry, které mají standardní hodnoty pro tuto chvíli, ale znovu se $ html parametr v konfiguraci:: updateValue () funkce v dalším článku, když se podíváme na téma formy ověření.
Provádění Konfigurace obrazovky
V našem zdrojovém souboru, jsme vytvořili vlastní členskou funkci _displayForm (). To je čistě dobrovolná jako všechny rozhraní kód může být umístěn v getContent () členskou funkci, ale je vysoce doporučeno oddělené na to z důvodu snadnější údržby kódu. Budeme-li vytvořit jednoduchý formulář v této funkci od, s nímž můžeme zachytit majitel obchodu vstupu.
soukromé funkce _displayForm ()
(
$ This-> _html .= '
<form action="'.$_SERVER['REQUEST_URI'].'" method="post">
<label> '. $ this-> l (' poselství světu').'</ label>
<div class="margin-form">
<input type="text" name="our_message" />
</ Div>
<input type="submit" name="submit" value="'.$this-> l ('Update').'" class = "Tlačítko" />
</ Form> ';
) Můžete vidět, že:: _displayForm () funkce jednoduše připojí standardní html kód formuláře na našich $ _html členské proměnné, s formou cíl je $ _SERVER ['] REQUEST_URI'. Prestashop je Back Office architektury bude trasa to naše:: člen getContent třída funkce pro nás zvládnout, když je zveřejněn formulář.
My vedle potřeba přidat kód, aby naše:: getContent () funkci skutečně zobrazí formulář, a manipulaci s formou podání.
veřejné funkce getContent ()
(
if (Tools:: isSubmit ('submit'))
(
Konfigurace:: updateValue ($ this-> jméno. '_message', Nářadí:: getValue ('our_message'));
)
$ This-> _displayForm ();
návrat $ this-> _html;
) Se:: getContent () funkce prvního použití jiné třídy Prestashop "Nástroje" a vyzkoušet, zda jsme manipulace po akci z formuláře, nebo zda tato funkce je jen jiným způsobem, tj. kliknutím na tlačítko "Konfigurovat" odkaz v modulu Seznam - parametr je název jsme dali na naše tlačítko "Aktualizovat" ve formě.
Je-li funkce je nazývá přímo Back Office (v tomto případě Nástroje:: isSubmit ('submit') vrátí false), pak říkáme formě rendering funkce jsme vytvořili výše a vrátí výstup, zachycená v $ this- > _html proměnná, do Back Office pro zobrazení.
Je-li funkce je označována jako výsledek našeho formuláře je vyslán, pak můžeme uložit naše nastavení parametru v databázi se zadané hodnoty na našem formuláři. Jsme opět použít třídu Nástroje pro získání hodnoty proměnné formuláře pomocí volání Nástroje:: getValue ('our_message'), kde 'our_message' je název vstupního pole v našem formuláři.
Můžete vidět, že jsem přidal jméno našeho modulu na začátku nastavení položky jméno - to je zajistit, aby konfigurace klíč je jedinečný jako namespace pro tyto klíče je společné pro celý obchod.
Jakmile budeme mít uloženy náš konfigurační data formuláře je opět zobrazí, připravený pro více vstupů v případě potřeby.
Modul Výstup na stránku
Nyní máme způsob zachycení informace od majitele obchodu a uložení do databáze, takže další zjevné krokem by bylo udělat něco, co s ním např. zobrazení na stránce. V části 1 cyklu jsme hovořili o "háčky" ve vztahu k modulům přidání funkcionality. Aby bylo možné využít tuto musíme říct, PrestaShop, že náš modul by rád hák do kanceláře přední a my to pomocí následujících funkcí (definované ve třídě základní modul):
$ This-> registerHook ($ hook_name);
Dolarů, hook_name parametr se vztahuje k jednomu z různých míst, že hlavním Prestashop umožňuje moduly pro vložení výstupu a / nebo zpracování dat, ale pro teď budeme používat jednu především - "leftColumn ', který nám umožňuje přidávat obsah v levém sloupci všech stránek. Za účelem inicializaci hák musíme přidat následující nový přednost v naší třídě:
veřejné funkce dosadit ()
(
rodiče:: install ();
if (! $ this-> registerHook ('leftColumn'))
return false;
) To říká, Prestashop vykonat náš modul háček, pokud je rendering obsahu pro levý sloupec ze všech stran. My vedle potřeba přidat funkci zvládnout hák zpětné volání. Úmluva je název funkce jako jméno hák předchází "háček":
veřejné funkce hookLeftColumn ()
(
návrat '<div class="block"> <h4>'. Konfigurace:: get ($ this-> jméno. '_message'). '</ H4> </ div>';
)
V našem jednoduchém příkladu jsme jen obal naší konfigurační parametr v některých standardních HTML značek tak, že je zobrazena správně na naší stránce.
Pokud jste již nainstalovali modul Nyní byste měli odinstalovat znovu nainstalovat, aby zajistily, že hák je správně zapsána s jádrem Prestashop. Nyní můžete zadat hodnoty v konfigurační obrazovka pro modul - např. 'Hello World' a bude výstup jako nadpis pole v levém sloupci vašeho obchodu. Úplný kód pro druhý příklad by měl nyní vypadat následovně:
<? Php
třída Tutorialsecond rozšiřuje modul
(
soukromé $ _html ='';
Funkce __construct ()
(
$ This-> name = 'tutorialsecond';
rodiče:: __construct ();
$ This-> karta = '' eCartService.net Návody;
$ This-> version = "0 .1.0 ';
$ This-> displayName = $ this-> l ('druhá výuka modulu');
$ This-> popis = $ this-> l ('Náš druhý modul - "Hello world" Redux');
)
veřejné funkce dosadit ()
(
rodiče:: install ();
if (! $ this-> registerHook ('leftColumn'))
return false;
)
veřejné funkce getContent ()
(
if (Tools:: isSubmit ('submit'))
(
Konfigurace:: updateValue ($ this-> jméno. '_message', Nářadí:: getValue ('our_message'));
)
$ This-> _displayForm ();
návrat $ this-> _html;
)
soukromé funkce _displayForm ()
(
$ This-> _html .= '
<form action="'.$_SERVER['REQUEST_URI'].'" method="post">
<label> '. $ this-> l (' poselství světu').'</ label>
<div class="margin-form">
<input type="text" name="our_message" />
</ Div>
<input type="submit" name="submit" value="'.$this-> l ('Update').'" class = "Tlačítko" />
</ Form> ';
)
veřejné funkce hookLeftColumn ()
(
návrat '<div class="block"> <h4>'. Konfigurace:: get ($ this-> jméno. '_message'). '</ H4> </ div>';
)
)
/ / Konec: tutorialsecond.php Přehled
V tomto článku jsme rozšířili náš první modul obsahuje základní konfiguraci formu a využili háček funkce pro zobrazení výstupu z našeho modul v levém sloupci našich stránek. V další části tohoto seriálu se podíváme na zlepšení konfiguraci zařízení v něco, co by mohly být použity v reálném modulu provedení. To bude zahrnovat validaci uživatelského vstupu na formulář, pre-obývat polí formuláře případně na základě aktuální konfiguraci a zobrazení modulu chyb a varování v zádech obrazovkách Office.