使用 HelperForm 时 Prestashop 表单输入不可见
Prestashop form input not visible when using HelperForm
我正在开发一个 prestashop 模块,这只是一个开始。
问题出在我模块的配置页面。
我附加了一些文本框,标签和描述可见,但文本框不可见。
我看了很多其他例子,但还没有发现任何差异和错误。
神秘的是,如果我将类型更改为 date
或 file
,它是可见的。
// This function called in getContent() of main module php file.
public function displayForm()
{
$fields_form = array(
'form' => array(
'legend' => array(
'title' => $this->trans('*'),
),
// Here is the textbox.
'input' => array(
array(
'type' => 'text',
'label' => $this->trans('Link:'),
'name' => 'LINK_PRODUCT',
'desc' => $this->trans('Please input the link...'),
'lang' => true,
'required' => true
)
),
'submit' => array(
'title' => $this->trans('Save'),
'class' => 'btn btn-default pull-right'
)
)
);
$helper = new HelperForm();
$helper->module = $this;
$helper->name_controller = $this->name;
$helper->token = Tools::getAdminTokenLite('AdminModules');
$helper->currentIndex = AdminController::$currentIndex . '&configure=' . $this->name;
$helper->title = $this->displayName;
$helper->show_toolbar = false;
$helper->submit_action = 'submit';
$helper->fields_value['LINK_PRODUCT'] = Configuration::get('LINK_PRODUCT');
return $helper->generateForm(array($fields_form));
}
我想让文本框可见,我应该怎么做?
您想要多语言,因此您需要定义默认语言。将此代码添加到您的助手定义中
$helper->default_form_language = $this->context->language->id;
并替换
$helper->fields_value['LINK_PRODUCT'] = Configuration::get('LINK_PRODUCT');
和
$helper->tpl_vars = array(
'fields_value' => array('LINK_PRODUCT' => Configuration::get('LINK_PRODUCT')),
'languages' => $this->context->controller->getLanguages(),
'id_language' => $this->context->language->id,
);
定义所有可用的语言和 LINK_PRODUCT 变量的值。
而且,不要忘记您使用多语言字段并且您需要有一个包含变量值的数组。因此,在提取和保存期间,您需要将它们视为所有语言的值。例如,如果您有三种语言可用,则需要获取三个值。获得它们的最佳方式是
$values = [];
foreach ($this->context->controller->getLanguages() as $language) {
$values[$language['id_lang']] = Configuration::get('LINK_PRODUCT', $language['id_lang']);
}
$helper->tpl_vars = array(
'fields_value' => array('LINK_PRODUCT' => $values),
'languages' => $this->context->controller->getLanguages(),
'id_language' => $this->context->language->id,
);
以及何时保存它使用类似的组合,但使用 updateValue
我正在开发一个 prestashop 模块,这只是一个开始。 问题出在我模块的配置页面。
我附加了一些文本框,标签和描述可见,但文本框不可见。
我看了很多其他例子,但还没有发现任何差异和错误。
神秘的是,如果我将类型更改为 date
或 file
,它是可见的。
// This function called in getContent() of main module php file.
public function displayForm()
{
$fields_form = array(
'form' => array(
'legend' => array(
'title' => $this->trans('*'),
),
// Here is the textbox.
'input' => array(
array(
'type' => 'text',
'label' => $this->trans('Link:'),
'name' => 'LINK_PRODUCT',
'desc' => $this->trans('Please input the link...'),
'lang' => true,
'required' => true
)
),
'submit' => array(
'title' => $this->trans('Save'),
'class' => 'btn btn-default pull-right'
)
)
);
$helper = new HelperForm();
$helper->module = $this;
$helper->name_controller = $this->name;
$helper->token = Tools::getAdminTokenLite('AdminModules');
$helper->currentIndex = AdminController::$currentIndex . '&configure=' . $this->name;
$helper->title = $this->displayName;
$helper->show_toolbar = false;
$helper->submit_action = 'submit';
$helper->fields_value['LINK_PRODUCT'] = Configuration::get('LINK_PRODUCT');
return $helper->generateForm(array($fields_form));
}
我想让文本框可见,我应该怎么做?
您想要多语言,因此您需要定义默认语言。将此代码添加到您的助手定义中
$helper->default_form_language = $this->context->language->id;
并替换
$helper->fields_value['LINK_PRODUCT'] = Configuration::get('LINK_PRODUCT');
和
$helper->tpl_vars = array(
'fields_value' => array('LINK_PRODUCT' => Configuration::get('LINK_PRODUCT')),
'languages' => $this->context->controller->getLanguages(),
'id_language' => $this->context->language->id,
);
定义所有可用的语言和 LINK_PRODUCT 变量的值。 而且,不要忘记您使用多语言字段并且您需要有一个包含变量值的数组。因此,在提取和保存期间,您需要将它们视为所有语言的值。例如,如果您有三种语言可用,则需要获取三个值。获得它们的最佳方式是
$values = [];
foreach ($this->context->controller->getLanguages() as $language) {
$values[$language['id_lang']] = Configuration::get('LINK_PRODUCT', $language['id_lang']);
}
$helper->tpl_vars = array(
'fields_value' => array('LINK_PRODUCT' => $values),
'languages' => $this->context->controller->getLanguages(),
'id_language' => $this->context->language->id,
);
以及何时保存它使用类似的组合,但使用 updateValue