当前位置: 首页 > 知识库问答 >
问题:

Prestashop模块=>如何从config.xml文件到达值

张砚
2023-03-14

我从Prestashop 1.7开始。

我的问题是:如何访问和使用config中的数据。如果无法通过Configuration::get(“[config.xml文件中的某些内容”)完成,则在代码中添加xml?为什么不在自定义模块的\uu construct()中填写属性(例如:$this-

以下是我尝试过的:

我一直在考虑创建一个PrestaShop 1.7模块;

我一直在经历:

  1. 什么是预启动模块

我体验了如何通过使用函数getContent()displayForm()来设置配置。

但是我不明白如何从配置中获取数据。xml文件。

我的config.xml文件是这样的(在目录[PrestashopProject]\模块):

<?xml version="1.0" encoding="UTF-8" ?>
<module>
  <name>mymodule</name>
  <displayName><![CDATA[My module]]></displayName>
  <version><![CDATA[1.0]]></version>
  <description><![CDATA[Description of my module.]]></description>
  <author><![CDATA[Firstname Lastname]]></author>
  <tab><![CDATA[front_office_features]]></tab>
  <confirmUninstall>Are you sure you want to uninstall?</confirmUninstall>
  <is_configurable>1</is_configurable>
  <need_instance>0</need_instance>
  <limited_countries>fr</limited_countries>
</module>

我有我的文件mymodule。php(也在目录[PrestashopProject]\module)中,如指南中所述:

class mymodule extends Module {
    public function __construct(){
    $this->name = 'mymodule';
     ...
    $this->bootstrap = false;
     parent::__construct();
    $this->displayName = $this->l('My Module');

     ....
    if (!Configuration::get('MYMODULE_NAME')) $this->warning = $this->l('No name provided.');

    }

    public function install(){
     ...
     return true;
   }

    public function uninstall(){
     ...      
     return true;
    }
    public function getContent(){
      ....//stuff to manage the submit of the form designed for configuration settings


    }

    public function displayForm(){
      ....//
      $fields_form[0]['form'] = array(
            'legend' => array(
                'title' => $this->l('Settings'),
            ), 
            'input' => array(
                'type' => 'text',
                'label' => $this->l('Configuration value'),
                'name' => 'confirmUninstall',
                'size' => 20,
                'required' => true
           ),
            'submit' => array(
                'title' => $this->l('Save'),
                'class' => 'btn btn-default pull-right'
            )
        );
        $helper = new HelperForm();
        .... // stuff with $helper like in the doc


        $helper->fields_value['confirmUninstall'] = Configuration::get('confirmUninstall');


    }
}

我不明白为什么配置::得到('确认卸载')这是在我的displayForm()函数不显示

同样在类的__construct()函数my模块扩展模块中,我可以预期如果我不添加$this-

以下是我从@drectot得到的第一个答案:

我想知道我在这里遗漏了什么。在创建第一个模块的最底部写着:

在模块安装期间,PrestaShop会自动在模块的文件夹中创建一个小config.xml文件,其中存储配置信息。手工编辑时要非常小心。

的确,首先,我创建了config。xml文件,因为我没有看到它最初弹出。

现在我从@TheDrot得到的答案是,我已经删除了我的config.xml文件,从Prestashop管理仪表板卸载了我的模块,并重新安装了它。

我以为重新安装它会创建config.xml文件,因为它应该根据mymodule.php。但它没有,我错过了一个设置吗?

更新:

它最终创建了配置。xml文件。我不知道是哪个动作触发了它,但它确实触发了。以及配置。自动创建的xml文件内容与mymodule匹配。php


共有1个答案

谢俊悟
2023-03-14

配置。xml对您来说是无用的,因为它是自动生成的,正如用于优化后端模块列表加载的文档所述。

这就是为什么您需要在模块构造函数中定义这些选项。

public function __construct() {
    ...
    $this->confirmUninstall = 'Are you sure?';
    ...
}

并在displayForm()中使用它

$helper->fields_value['confirmUninstall'] = $this->confirmUninstall;

Configuration::get()与配置无关。在数据库表dbprefix\u配置中读取字符串值时使用xml。

获取默认的商店语言ID:

$defaultLangID = Configuration::get('PS_LANG_DEFAULT'):

 类似资料:
  • 加载表单时,prestashop 1.7中有一个问题。在我的模块中,tpl无法执行。我需要的是,当我继续付款时,我会使用付款平台打开一个新的销售,在平台车中的prestashop中,我会留下验证代码。请帮忙 prestashop模块的主文件 这是表格。第三方物流,我没有充电的方法,但它是通过测试 这是验证文件

  • 问题内容: 我有一个包含多个Maven模块的项目 MockIFSClient 访问为 因此 IFSClientTest 运行鳍,因为它们在同一包中。 问题? 尝试访问相同代码的 调用,但现在失败,因为 services / pom.xml 具有以下依赖性 题 我要做出什么改变 这样也可以从不同的模块访问它 问题答案: 这个答案帮助我正确了 如何从Java中的类路径真正读取文本文件 我将代码更改为

  • 我有一个使用git子模块的项目。在我的python文件中,我想在子模块项目中使用另一个python文件中的函数。 为了工作,我必须将init.py文件添加到路径中的所有子文件夹中。我的文件夹树如下: 有没有办法让它在不接触mygitsubmodule的情况下工作? 谢谢

  • 我正在设计一个程序,为消息中的特定字符保存索引位置。然后,我需要根据这些字符的索引位置来检索它们。我将这些字符的位置保存在。txt文件中。我检索了它们,但在最后,我得到了这样一条消息“Exception in thread”AWT-EventQueue-0“java.lang.IndexoutOfBoundsException:Index 120 out of bounded for length

  • 嗨,我是prestashop的新手,我尝试创建一个1.7版的管理模块。我会创建一个新的菜单来显示模板和管理我的数据库。 mymodule.php: 模块/mymodule/controller/admin/MyModuleController。php: 模块/mymodule/views/templates/admin/mymodule。第三方物流: 我用很多教程1.7/1.6的编译创建了这个,但

  • 问题内容: 我经历了许多Python相对导入问题,但是我无法理解该问题/无法正常工作。 我的目录结构是: 当我尝试运行时: 我得到错误 问题答案: 之所以发生这种情况,是因为就Python而言,它们是独立的,无关的软件包。 在与该目录相同的目录中创建一个目录,一切都会按预期进行。