Configuration :: get()在PrestaShop 1.6的控制器中返回空值

时间:2019-05-29 07:23:51

标签: prestashop prestashop-1.6

我正在使用PrestaShop 1.6.1.0

我的模块中有一个支持不同语言的字段,postProcess()如下所示:

protected function postProcess()
{

  $languages = Language::getLanguages(false);
  $values = array();

  foreach ($languages as $lang)
  {
    $values['CUSTOMPAGECONFIGURATION_HEADING_TEXT'][$lang['id_lang']] = Tools::getValue('CUSTOMPAGECONFIGURATION_HEADING_TEXT_'.$lang['id_lang']);
  }
  Configuration::updateValue('CUSTOMPAGECONFIGURATION_HEADING_TEXT', $values['CUSTOMPAGECONFIGURATION_HEADING_TEXT'], true);
  return $this->displayConfirmation($this->l('The settings have been updated.'));
}

问题:

当我尝试在自定义控制器(路径:/controllers/front/CustomPageController.php)中获取此配置变量值时,如下所示,它没有获取任何结果:

$headtxt = Configuration::get('CUSTOMPAGECONFIGURATION_HEADING_TEXT');
print_r($headtxt);
exit;

它没有打印任何内容。我想在控制器中获取此值,但是它不起作用并返回空字符串。

站点正在使用PrestaShop 1.6.1.0,我尝试了许多可用代码。我想念什么吗?

我在我为自定义页面创建的新控制器中使用此代码:

$headtxt = Configuration::get('CUSTOMPAGECONFIGURATION_HEADING_TEXT');
print_r($headtxt);
exit;

我希望输出通过postProcess()方法保存的配置变量的结果。

1 个答案:

答案 0 :(得分:0)

您好,@ Ankur,欢迎您光临!

在您的postProcess()方法中,您将此配置值保存为多语言值。

但是,在调用Configuration::get()静态方法时,在我看来您忘了提及语言ID了,这是函数原型:

public static function get($key, $idLang = null, $idShopGroup = null, $idShop = null, $default = false)

这应该有效:

$id_lang = (int)$this->context->cookie->id_lang
$headtxt = Configuration::get('CUSTOMPAGECONFIGURATION_HEADING_TEXT', $id_lang);
print_r($headtxt);
exit;