在我的prestashop helperForm中,我想使用内置的商店选择器。选择树显示,但我无法正确设置tpl_vars。奇怪的是,我所说的名字'并不重要。 (布拉布拉)。复选框的名称始终为" checkBoxShopAsso_configuration"。
if (Shop::isFeatureActive()) {
$inputs[] = array(
'type' => 'shop',
'label' => $this->l('Shop association:'),
'name' => 'genzo_link',
);
}
$fields_form = array(
'form' => array(
'legend' => array(
'title' => ('Add Link'),
'icon' => 'icon-cogs'
),
'input' => $inputs,
'submit' => array(
'title' => ('Update'),
'class' => 'btn btn-default pull-right'
)
)
);
$helper = new HelperForm();
$helper->submit_action = 'saveLink';
$helper->default_form_language = $this->context->language->id;
$helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false) . '&configure=' . $this->name .'&module_name=' . $this->name;
$helper->token = Tools::getAdminTokenLite('AdminModules');
$vars['blabla'][3] = 0;
$helper->tpl_vars = array(
'fields_value' => $vars,
'languages' => $this->context->controller->getLanguages(),
'id_language' => $this->context->language->id,
);
我如何设置tpl_vars,以便只选择带有条目的商店?我们说我有3家商店,只有前两家商店有一个入口。我想我必须这样做:
$vars['blabla'][1] = 1;
$vars['blabla'][2] = 1;
$vars['blabla'][3] = 0;
但这不起作用。它总是选择所有3家商店。
感谢您的帮助!如果不清楚,请告诉我你需要更好的解释。
更新 对于其他人。您只需要使用这三个信息设置对象。
$helper->table = 'genzo_link';
$helper->id = $id_genzo_link;
$helper->identifier = 'id_genzo_link';
答案 0 :(得分:1)
您没有(或无法)在表单创建中输入所选商店。它将从数据库中为您完成。
当类型是' shop'它会执行:
$ ssh admin@remotehost "sudo passwd -u admin"
sudo: no tty present and no askpass program specified
$ ssh -t admin@remotehost "sudo passwd -u admin"
[sudo] password for admin:
Sorry, try again.
[sudo] password for admin:
Sorry, try again.
[sudo] password for admin:
sudo: 3 incorrect password attempts
Connection to remotehost closed.
在$params['html'] = $this->renderAssoShop($disable_shops);
中,它会检查该功能是否有效,然后:
HelperForm::renderAssoShop($disable_shared = false, $template_directory = null)
所以,如果你的对象表是blabla,你只需要用id_blabla和id_shop创建blabla_shop。 顺便说一句,如果(int)$ this-> id为0,它将从上下文中预选所有商店。