How To Create A Form Using Helper Form In Prestashop
You can create a form in prestashop using multiple methods and today we will talk about how to create a form using helper form in prestashop. This method is the most advanced because using this method you will be able to add dropdown for multi-language website, I will show in you in the upcoming tutorials how to add multi-language dropdown to a field in prestashop too. Today we will create a form from scratch using helper form.
First of all we have to go in our controller and create the following function:
<?php
public function displayForm(){
$default_lang = (int)Configuration::get('PS_LANG_DEFAULT');
$fields_form = array();
$fields_form[0]['form'] = array(
'legend' => array(
'title' => $this->l('My module settings')
),
'input' => array(
array(
'type' => 'text',
'label' => $this->l('Box Description: '),
'name' => 'box_description'
)
),
'submit' => array(
'title' => $this->l('Save'),
'class' => 'btn btn-default pull-right'
)
);
$languages = Language::getLanguages();
$helper = new HelperForm();
$helper->name_controller = 'HomepageSettings';
$helper->token = Tools::getAdminTokenLite('AdminModules');
$helper->default_form_language = $default_lang;
$helper->allow_employee_form_lang = $default_lang;
$helper->languages = $this->context->controller->getLanguages();
$helper->title = $this->displayName;
$helper->show_toolbar = true; // false -> remove toolbar
$helper->toolbar_scroll = true; // yes - > Toolbar is always visible on the top of the screen.
$helper->submit_action = 'homepage_settings';
foreach($languages as $k => $v){
$helper->fields_value['box_description'] = Configuration::get('box_desc');
}
return $helper->generateForm($fields_form);
}
Using the above function prestashop will generate for you the structure for your form in tpl file. All you add in $fields_form array will help in creating the main form. Now, to show the form in the template file we will need to create a second function in our create where we will assign a smarty var and we will pass this function as value for the variable.
The function will look like the following:
public function initContent(){
parent::initContent();
$this->context->smarty->assign('form', $this->displayForm());
$content = $this->context->smarty->fetch(_PS_MODULE_DIR_ . 'your path to tpl file');
$this->context->smarty->assign(array(
'content' => $this->content . $content,
));
}
As you can see I assigned to the form variable displayForm() function, now the last step is to go in our template file and use the $form var and the form should appear on the page. In addition we can create the postProcess() function where we will handle the update/insert functions for our module. This is one of the methods to create a form using helper form in prestashop, as I said earlier I will make a tutorial for multi-language sites. Let me know if this method worked for you in the comments section.