Я пытаюсь создать настраиваемую страницу в админпанели Prestashop, где владелец магазина может заполнять свои предстоящие события, которые будут отображаться в столбце на странице header.tpl. Шаблоны и контроллер пока работают, их структура основана на ответе здесь, в Stack Overflow:
Как создать новую страницу в панели администратора prestashop? < / а>
Теперь я сделал в content.tpl (с добавленными пользовательскими файлами JavaScript и CSS) форму с полями ввода. Следующим шагом является отправка его контроллеру для сохранения в базе данных. Но я застрял в этой части. Я не могу найти, как мне красиво отправить форму контроллеру. Сначала я попробовал это с помощью функции Ajax, но не смог найти правильный способ. Также без Ajax успеха нет.
$.ajax({
type: 'POST',
headers: { "cache-control": "no-cache" },
url: baseUri + '?rand=' + new Date().getTime(),
async: true,
cache: false,
dataType : "json",
data:{
processEvents: true,
ajax: 'true',
controller: 'AdminEvents',
token: static_token
},
//success: function(jsonData){
//}
});
Это пример функции Ajax, которую я пробовал. Мои вопросы:
- Как другие файлы tpl или js получают baseUri, где эта переменная установлена?
- Какова функция даты и времени? Rand в этой строке? Что-то вроде токена безопасности?
- What is the url of the controller? Also the url when I use
- I guess the processEvents : true and Ajax : true is for security reasons and to check if the form is submitted by Ajax or not?
- Зачем нужно отправлять имя контроллера?
- Откуда токен?
Вопросы по контроллеру:
Какие (функции Prestashop по умолчанию) можно или нужно использовать? Например:
if (Tools::isSubmit('name')){
и Т. Д.
if (Tools::getValue('create_account')){
и Т. Д.
Могу ли я использовать эти функции где угодно или только в функции Init?
Много вопросов, не стесняйтесь отвечать только на их часть, мне просто нужен хороший толчок в правильном направлении, поиск и чтение онлайн-документации и в Интернете не дали мне решения и немного промыли мне мозги.
РЕДАКТИРОВАТЬ:
Я сам немного продвинулся:
- Откуда берется токен?
- Какой URL у контроллера? Также URL, когда я использую
С помощью инструментов getAdminTokenLite и имени контроллера я сгенерировал URL-адрес контроллера:
$token = '?controller=AdminEvents&token='.Tools::getAdminTokenLite('AdminEvents');
URL-адрес для публикации - это токен плюс домен, каталог администратора и index.php.
С помощью инструмента getValue я получаю данные POST, как в PHP, с помощью $ _POST ["name"].
Tools::getValue('event_name')
Так что он работает, но я думаю, что с другими инструментами Presta по умолчанию он может быть лучше.