Хранение конфигурации модуля
Введение
В третьей части этой серии статей мы рассмотрим, каким образом мы можем хранить конфигурационные данные для наших модулей в базе данных PrestaShop, и как мы можем позволить пользователям взаимодействовать с этими данными для контроля за поведением модуля. Мы также кратко остановиться на том, как мы можем генерировать вывод из нашего модуля обеспечивают визуальное представление изменений конфигурации.
Управление пользовательскими настройками
Мы будем называть этот модуль "TutorialSecond", так мы опять необходимо создать новый модуль каталога и файл класса - которая будет называться "tutorialsecond" и "tutorialsecond.php", соответственно. Файл класса (tutorialsecond.php) должен содержать следующие сведения:
<? PHP
класса Tutorialsecond распространяется модуль
(
частных $ _html ='';
функцию __construct ()
(
$ ЬЫз-> имя = 'tutorialsecond;
родителей:: __construct ();
$ ЬЫз-> вкладка = 'eCartService.net учебники;
$ ЬЫз-версии> = '0 .1,0;
$ ЬЫз-> DisplayName = $ ЬЫз-> л ("Второй модуль Учебник ');
$ ЬЫз-> описание = $ ЬЫз-> л ("Наш второй модуль -" Привет мир "возрождением ');
)
общественного getContent функция ()
(
)
частных _displayForm функция ()
(
)
)
/ / Конец: tutorialsecond.php Вы заметите, что мы внедрили два новых функций-членов:: getContent () и:: _displayForm (). Если Вы хотите загрузить файл на сервер и установить этот модуль на этом этапе вы увидите новую опцию в списке модулей экран "Второй модуль Учебник. Там теперь будут ">> Настроить ссылку в модуле, хотя и щелкнув на нем будет лишь возвращать пустую страницу Back Office. Наличие:: getContent () функцию-член несет ответственность за это, как он обеспечивает интерфейс между нашими модуль и Back Office.
В дополнение к этим две новые функции, мы также добавили $ _html закрытой переменной-члене, который мы будем использовать в дальнейшем в этой статье, для создания требуемой производительности для отображения в Back Office.
Сохранение и загрузка данных конфигурации
PrestaShop обеспечивает "Конфигурация" класса, который предлагает несколько функций-членов для управления конфигурацией данных, но две ключевые функции, которые будут наиболее распространенными являются:
Конфигурация:: updateValue ($ ключ, значение $, $ HTML = ложным);
Конфигурация:: получить ($ ключевых, $ id_lang = NULL);
Конфигурация:: updateValue () позволяет нам хранить опция конфигурации в базе данных (опционально в нескольких Языки в этом случае значение $ параметр будет массив) и настройки:: получить () функция позволяет получить сведения о конфигурации для выбранного или хранить язык по умолчанию. Мы будем игнорировать параметры, которые имеют значения по умолчанию и есть, но вернется к $ HTML параметра настройки:: updateValue () в следующей статье, когда мы смотрим на объект формы проверки.
Реализация экран Настройка
В наш исходный файл мы создали частные _displayForm функция-член (). Это совершенно не обязательно, как и все интерфейса код может быть помещен в getContent () функцию-член, однако он настоятельно рекомендуем вам отделить из ради проще код обслуживания. Мы создадим простую форму в рамках этой функции, с которыми мы можем хранить ввода захвата владельца.
частных _displayForm функция ()
(
$ ЬЫз-> _html .= '
<form action="'.$_SERVER['REQUEST_URI'].'" method="post">
<label>. $ ЬЫз-> л ('Обращение к мировой').'</ ярлык>
<div class="margin-form">
<input type="text" name="our_message" />
</> Div
<input type="submit" name="submit" value="'.$this-> л ('Обновить').'" класс = "кнопку" />
</ Форму> ';
) Вы видите, что:: _displayForm () функция просто добавляет стандартный код HTML форме на наш $ _html переменной-члена, с формой целевой время $ REQUEST_URI '] _SERVER ['. Вернуться PrestaShop Офис архитектуры будет направлять это к нашим:: getContent функцию-член класса нам ручкой, когда форма будет опубликован.
Теперь мы должны добавить код нашего:: getContent (), чтобы на самом деле отображения формы и обрабатывать данные формы.
общественного getContent функция ()
(
если (Tools:: isSubmit ('представляет'))
(
Конфигурация:: updateValue ($ ЬЫз-> имя. _message, Инструменты:: деЬУа ('our_message'));
)
$ ЬЫз-> _displayForm ();
геЬигп $ ЬЫз-> _html;
) :: GetContent () функции первого использует другой класс PrestaShop "Инструменты", чтобы проверить, имеем ли мы после обработки действий по форме, или же эта функция в настоящее время называется по-другому т.е. нажмите кнопку "Настройка" ссылка в модуле список - параметр имя мы дали нашим кнопку "обновить" в форме.
Если функция вызывается непосредственно Back Office (в этом случае Tools:: isSubmit ("Отправить") вернет ложь), то мы называем формы оказания функции мы создали выше, и вернуть выходной, захваченных в $ это- > _html переменной, в бэк-офис для отображения.
Если функция вызывается в результате нашей формы их размещения, то мы можем хранить наши параметров конфигурации в базе данных со значением вступили на нашу форму. Мы снова используем класс инструменты для получения значения переменных, используя форму вызова Tools:: деЬУа ('our_message'), где 'our_message' это имя в поле ввода в нашу форму.
Вы видите, что я добавил имя нашего модуля до начала элемента конфигурации имя - это для того, чтобы конфигурация ключ уникален, так как имен для этих разделов является общим для всего магазина.
После того как мы сохранили нашу конфигурацию данных формы снова появилась, готовы к более весомый вклад в случае необходимости.
Модуль Выход на страницу
Теперь у нас есть метод захвата входного от владельца магазина и его сохранение в базе данных, поэтому в следующий очевидный шаг будет что-то делать с ним, например отображение его на этой странице. В части 1 серии мы говорили о "крючки" в связи с модулями добавления функциональности. Для того, чтобы использовать это мы должны сказать, что наши PrestaShop модуль хотел бы крюк в офис фронта и мы делаем это, используя следующие функции (определенные в базовом классе Module):
$ ЬЫз-> registerHook ($ hook_name);
$ Hook_name параметр относится к одному из разных точек, что основные PrestaShop позволяет модулям для вывода вставки и / или обработке данных, но сейчас мы будем использовать, в частности, один - "leftColumn", которая позволяет добавлять содержание в левой колонке для всех страниц. Для того, чтобы инициализировать крючок необходимо добавить следующие новые переопределить в свой собственный класс:
публичную функцию установки ()
(
родителя:: установка ();
если (! $ ЬЫз-> registerHook ('leftColumn'))
вернуться ложным;
) Это говорит PrestaShop выполнить наш модуль крючок, когда она оказывает содержание в левой колонке на всех страницах. Теперь мы должны добавить функцию для обработки крючок обратного вызова. Конвенции является имя функции в качестве имени Хук предшествует "крючок":
общественного hookLeftColumn функция ()
(
<div возвращаться 'class="block"> <h4>. Конфигурация:: получить ($ ЬЫз-> имя. _message '). "</ H4> </ DIV> ';
)
В нашем простом примере мы просто упаковка нашей конфигурации параметров в некоторых стандартных HTML-разметки, так что корректно отображаться на страницах сайта.
Если у вас уже установлен модуль теперь вы должны удалить, а затем повторно для того, чтобы крючок правильно зарегистрирован в основных PrestaShop. Теперь вы можете ввести значение в окне конфигурации для модуля - например, 'Hello World', и он будет выводиться как заголовок окна в левой колонке вашего магазина. Полный код для второй пример должен выглядеть так:
<? PHP
класса Tutorialsecond распространяется модуль
(
частных $ _html ='';
функцию __construct ()
(
$ ЬЫз-> имя = 'tutorialsecond;
родителей:: __construct ();
$ ЬЫз-> вкладка = 'eCartService.net учебники;
$ ЬЫз-версии> = '0 .1,0;
$ ЬЫз-> DisplayName = $ ЬЫз-> л ("Второй модуль Учебник ');
$ ЬЫз-> описание = $ ЬЫз-> л ("Наш второй модуль -" Привет мир "возрождением ');
)
публичную функцию установки ()
(
родителя:: установка ();
если (! $ ЬЫз-> registerHook ('leftColumn'))
вернуться ложным;
)
общественного getContent функция ()
(
если (Tools:: isSubmit ('представляет'))
(
Конфигурация:: updateValue ($ ЬЫз-> имя. _message, Инструменты:: деЬУа ('our_message'));
)
$ ЬЫз-> _displayForm ();
геЬигп $ ЬЫз-> _html;
)
частных _displayForm функция ()
(
$ ЬЫз-> _html .= '
<form action="'.$_SERVER['REQUEST_URI'].'" method="post">
<label>. $ ЬЫз-> л ('Обращение к мировой').'</ ярлык>
<div class="margin-form">
<input type="text" name="our_message" />
</> Div
<input type="submit" name="submit" value="'.$this-> л ('Обновить').'" класс = "кнопку" />
</ Форму> ';
)
общественного hookLeftColumn функция ()
(
<div возвращаться 'class="block"> <h4>. Конфигурация:: получить ($ ЬЫз-> имя. _message '). "</ H4> </ DIV> ';
)
)
/ / Конец: tutorialsecond.php Резюме
В этой статье мы расширили наш первый модуль включает основные формы конфигурации и использовали крючок функции для вывода на экран из нашего модуля в левой колонке нашего сайта. В следующей части этой серии статей мы будем смотреть на улучшение конфигурации объекта в нечто, что может быть использована в реальном модуле реализации. Это будет включать проверку пользовательского ввода в форме предварительного заполнения полей формы по мере необходимости на основе текущей конфигурации модуля и отображение ошибок и предупреждений в спину экраны Office.