我需要在Prestashop 1.5中将类别限制为一组国家/地区。 这种限制将阻止属于这种类别的产品的运输;因此,用户仍然可以看到产品,但他们无法购买。
理想情况下,我想开发一个模块,可以在类别的编辑页面中插入国家/地区列表(复选框样式,如模块 - >付款页面(AdminPayment)),但我无法做到如此。
为什么我不能简单地将以下代码粘贴到renderForm()函数中? 如果我这样做,只有描述可见......
array(
'items' =>Country::getCountries(Context::getContext()->language->id),
'title' => $this->l('Country restrictions'),
'desc' => $this->l('Please mark the checkbox(es) for the country or countries for which you want to block the shipping.'),
'name_id' => 'country',
'identifier' => 'id_country',
'icon' => 'world',
),
修改 我设法得到了工作国家的名单:
array(
'type' => 'checkbox',
'label' => $this->l('Restricted Countries').':',
'class' => 'sel_country',
'name' => 'restricted_countries',
'values' => array(
'query' => Country::getCountries(Context::getContext()->language->id),
'id' => 'id_country',
'name' => 'name'
),
'desc' => $this->l('Mark all the countries you want to block the selling to. The restrictions will always be applied to every subcategory as well')
),
现在,我可以通过检查是否在postProcess函数中提交值“submitAddcategory”并在那里运行插入查询来保存这些值。同样,我也可以从数据库中加载被阻止国家/地区的ID,但如何可以勾选国家/地区列表中的相应选择框?
我最初的“快速和肮脏”的想法是在document.ready()中使用jQuery选择器,但代码在其他所有内容之前插入,因此,它将无法工作,因为jQuery甚至没有加载
如何做到这一点?
干杯
答案 0 :(得分:1)
我在renderForm()函数结束之前使用以下代码解决了这个问题。 Piècederésistance是$ this-> fields_value,遗憾的是我不知道它的存在。
public function getRestrictedCountries($obj)
{
// Loading blacklisted countries
$country = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT DISTINCT id_country
FROM `'._DB_PREFIX_.'category_country_restriction`
WHERE id_category = ' . (int)Tools::getValue('id_category') . ';');
$blacklisted_countries = array();
if (is_array($country))
foreach ($country as $cnt)
$blacklisted_countries[] = $cnt['id_country'];
// Global country list
$c_todos = Country::getCountries(Context::getContext()->language->id);
// Crossmatching everything
foreach ($c_todos as $c)
$this->fields_value['restricted_countries_'.$c['id_country']] = Tools::getValue('restricted_countries_'.$c['id_country'], (in_array($c['id_country'], $blacklisted_countries)));
}
PS:我正在阅读的表基本上是'category'和'country'之间的关联表