Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Prestashop “非常基本”;“创建第一个模块”;辅导失败。怎么用?_Prestashop_Prestashop 1.6 - Fatal编程技术网

Prestashop “非常基本”;“创建第一个模块”;辅导失败。怎么用?

Prestashop “非常基本”;“创建第一个模块”;辅导失败。怎么用?,prestashop,prestashop-1.6,Prestashop,Prestashop 1.6,所以我在关注Prestashop出版的(参考了他们的),但它不起作用 因为所有其他“如何制作模块”的问题都指向这里,所以我没有什么进展 在这个问题的底部是我目前所处的代码,我没有得到一个特定的错误,但我没有看到*在必填字段旁边。当我加上 'desc' => $this->l('Description displayed under the field.'), 它在左边,不是在下面,如果我加上 'lang' => true, 我完全失去了输入 这些都是从他们的指南中粘贴出来的

所以我在关注Prestashop出版的(参考了他们的),但它不起作用

因为所有其他“如何制作模块”的问题都指向这里,所以我没有什么进展

在这个问题的底部是我目前所处的代码,我没有得到一个特定的错误,但我没有看到*在必填字段旁边。当我加上

'desc' => $this->l('Description displayed under the field.'),
它在左边,不是在下面,如果我加上

'lang' => true,
我完全失去了输入

这些都是从他们的指南中粘贴出来的副本,那么我遗漏了什么呢?不幸的是,它不是一个非常完整的文档。他们真的应该有一个完整的工作示例。现在,有对模板文件(tpl)的模糊引用,但到目前为止还没有明确提及。所以在这一点上,我只有一个php文件在教程中指出了这一点

<?php
if (!defined('_PS_VERSION_'))
  exit;

class SPFishbox extends Module
{
  public function __construct()
  {
    $this->name = 'spfishbox';
    $this->tab = 'front_office_features';
    $this->version = '1.0.0';
    $this->author = 'SP';
    $this->need_instance = 0;
    $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
    $this->bootstrap = false;

    parent::__construct();

    $this->displayName = $this->l('Fishbox');
    $this->description = $this->l('Adds Fishbox code snipped.');

    $this->confirmUninstall = $this->l('Are you sure you want to uninstall?');

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

  public function install()
  {
    if (Shop::isFeatureActive())
      Shop::setContext(Shop::CONTEXT_ALL);

    if (!parent::install() ||
      !$this->registerHook('header') ||
      !Configuration::updateValue('MYMODULE_NAME', 'Fishbox Snippet')
    )
      return false;

    return true;
  }
  public function uninstall()
  {
    if (!parent::uninstall())
      return false;
    return true;
  }

  public function getContent()
  {
    $output = null;

    if (Tools::isSubmit('submit'.$this->name))
    {
      $my_module_name = strval(Tools::getValue('MYMODULE_NAME'));
      if (!$my_module_name
        || empty($my_module_name)
        || !Validate::isGenericName($my_module_name))
        $output .= $this->displayError($this->l('Invalid Configuration value'));
      else
      {
        Configuration::updateValue('MYMODULE_NAME', $my_module_name);
        $output .= $this->displayConfirmation($this->l('Settings updated'));
      }
    }
    return $output.$this->displayForm();
  }

  public function displayForm()
  {
      // Get default language
      $default_lang = (int)Configuration::get('PS_LANG_DEFAULT');

      // Init Fields form array
      $fields_form[0]['form'] = array(
          'legend' => array(
              'title' => $this->l('Settings'),
          ),
          'input' => array(
              array(
                  'type' => 'text',
                  'label' => $this->l('Configuration value'),
                  'name' => 'MYMODULE_NAME',
                  'size' => 20,
                  'required' => true
              )
          ),
          'submit' => array(
              'title' => $this->l('Save'),
              'class' => 'button'
          )
      );

      $helper = new HelperForm();

      // Module, token and currentIndex
      $helper->module = $this;
      $helper->name_controller = $this->name;
      $helper->token = Tools::getAdminTokenLite('AdminModules');
      $helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;

      // Language
      $helper->default_form_language = $default_lang;
      $helper->allow_employee_form_lang = $default_lang;

      // Title and toolbar
      $helper->title = $this->displayName;
      $helper->show_toolbar = true;        // false -> remove toolbar
      $helper->toolbar_scroll = true;      // yes - > Toolbar is always visible on the top of the screen.
      $helper->submit_action = 'submit'.$this->name;
      $helper->toolbar_btn = array(
          'save' =>
          array(
              'desc' => $this->l('Save'),
              'href' => AdminController::$currentIndex.'&configure='.$this->name.'&save'.$this->name.
              '&token='.Tools::getAdminTokenLite('AdminModules'),
          ),
          'back' => array(
              'href' => AdminController::$currentIndex.'&token='.Tools::getAdminTokenLite('AdminModules'),
              'desc' => $this->l('Back to list')
          )
      );

      // Load current value
      $helper->fields_value['MYMODULE_NAME'] = Configuration::get('MYMODULE_NAME');

      return $helper->generateForm($fields_form);
  }
}

您必须进行以下修改:

$this->bootstrap = true;
以及:

完整代码:

<?php
if (!defined('_PS_VERSION_'))
    exit;

class SPFishbox extends Module
{
    public function __construct()
    {
        $this->name = 'spfishbox';
        $this->tab = 'front_office_features';
        $this->version = '1.0.0';
        $this->author = 'SP';
        $this->need_instance = 0;
        $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
        $this->bootstrap = true;

        parent::__construct();

        $this->displayName = $this->l('Fishbox');
        $this->description = $this->l('Adds Fishbox code snipped.');

        $this->confirmUninstall = $this->l('Are you sure you want to uninstall?');

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

    public function install()
    {
        if (Shop::isFeatureActive())
            Shop::setContext(Shop::CONTEXT_ALL);

        if (!parent::install() ||
            !$this->registerHook('header') ||
            !Configuration::updateValue('MYMODULE_NAME', 'Fishbox Snippet')
        )
            return false;

        return true;
    }
    public function uninstall()
    {
        if (!parent::uninstall())
            return false;
        return true;
    }

    public function getContent()
    {
        $output = null;

        if (Tools::isSubmit('submit'.$this->name))
        {
            $my_module_name = strval(Tools::getValue('MYMODULE_NAME'));
            if (!$my_module_name
                || empty($my_module_name)
                || !Validate::isGenericName($my_module_name))
                $output .= $this->displayError($this->l('Invalid Configuration value'));
            else
            {
                Configuration::updateValue('MYMODULE_NAME', $my_module_name);
                $output .= $this->displayConfirmation($this->l('Settings updated'));
            }
        }
        return $output.$this->displayForm();
    }

    public function displayForm()
    {
            // Get default language
            $default_lang = (int)Configuration::get('PS_LANG_DEFAULT');

            // Init Fields form array
            $fields_form[0]['form'] = array(
                  'legend' => array(
                            'title' => $this->l('Settings'),
                  ),
                  'input' => array(
                            array(
                                'type' => 'text',
                                'label' => $this->l('Configuration value'),
                                'name' => 'MYMODULE_NAME',
                                'size' => 20,
                                'required' => true,
                                'desc' => $this->l('Description displayed under the field.'),
                                'lang' => true,
                            )
                  ),
                  'submit' => array(
                            'title' => $this->l('Save'),
                            'class' => 'button'
                  )
            );

            $helper = new HelperForm();

            $languages = Language::getLanguages(false);

            foreach ($languages as $k => $language)
                $languages[$k]['is_default'] = (int)$language['id_lang'] == Configuration::get('PS_LANG_DEFAULT');
            $helper->languages = $languages;

            // Module, token and currentIndex
            $helper->module = $this;
            $helper->name_controller = $this->name;
            $helper->token = Tools::getAdminTokenLite('AdminModules');
            $helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;

            // Language
            $helper->default_form_language = $default_lang;
            $helper->allow_employee_form_lang = $default_lang;

            // Title and toolbar
            $helper->title = $this->displayName;
            $helper->show_toolbar = true;            // false -> remove toolbar
            $helper->toolbar_scroll = true;        // yes - > Toolbar is always visible on the top of the screen.
            $helper->submit_action = 'submit'.$this->name;
            $helper->toolbar_btn = array(
                  'save' =>
                  array(
                            'desc' => $this->l('Save'),
                            'href' => AdminController::$currentIndex.'&configure='.$this->name.'&save'.$this->name.
                            '&token='.Tools::getAdminTokenLite('AdminModules'),
                  ),
                  'back' => array(
                            'href' => AdminController::$currentIndex.'&token='.Tools::getAdminTokenLite('AdminModules'),
                            'desc' => $this->l('Back to list')
                  )
            );

            // Load current value
            $helper->fields_value['MYMODULE_NAME'] = Configuration::get('MYMODULE_NAME');

            return $helper->generateForm($fields_form);
    }
}

这里也有同样的问题,当我将lang设置为true时,输入会消失……PS1.6中肯定缺少文档!实际上,它还需要处理多语言值的保存:
Configuration::updateValue($field,$array)。其中$array具有id_lang key的所有语言。
<?php
if (!defined('_PS_VERSION_'))
    exit;

class SPFishbox extends Module
{
    public function __construct()
    {
        $this->name = 'spfishbox';
        $this->tab = 'front_office_features';
        $this->version = '1.0.0';
        $this->author = 'SP';
        $this->need_instance = 0;
        $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
        $this->bootstrap = true;

        parent::__construct();

        $this->displayName = $this->l('Fishbox');
        $this->description = $this->l('Adds Fishbox code snipped.');

        $this->confirmUninstall = $this->l('Are you sure you want to uninstall?');

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

    public function install()
    {
        if (Shop::isFeatureActive())
            Shop::setContext(Shop::CONTEXT_ALL);

        if (!parent::install() ||
            !$this->registerHook('header') ||
            !Configuration::updateValue('MYMODULE_NAME', 'Fishbox Snippet')
        )
            return false;

        return true;
    }
    public function uninstall()
    {
        if (!parent::uninstall())
            return false;
        return true;
    }

    public function getContent()
    {
        $output = null;

        if (Tools::isSubmit('submit'.$this->name))
        {
            $my_module_name = strval(Tools::getValue('MYMODULE_NAME'));
            if (!$my_module_name
                || empty($my_module_name)
                || !Validate::isGenericName($my_module_name))
                $output .= $this->displayError($this->l('Invalid Configuration value'));
            else
            {
                Configuration::updateValue('MYMODULE_NAME', $my_module_name);
                $output .= $this->displayConfirmation($this->l('Settings updated'));
            }
        }
        return $output.$this->displayForm();
    }

    public function displayForm()
    {
            // Get default language
            $default_lang = (int)Configuration::get('PS_LANG_DEFAULT');

            // Init Fields form array
            $fields_form[0]['form'] = array(
                  'legend' => array(
                            'title' => $this->l('Settings'),
                  ),
                  'input' => array(
                            array(
                                'type' => 'text',
                                'label' => $this->l('Configuration value'),
                                'name' => 'MYMODULE_NAME',
                                'size' => 20,
                                'required' => true,
                                'desc' => $this->l('Description displayed under the field.'),
                                'lang' => true,
                            )
                  ),
                  'submit' => array(
                            'title' => $this->l('Save'),
                            'class' => 'button'
                  )
            );

            $helper = new HelperForm();

            $languages = Language::getLanguages(false);

            foreach ($languages as $k => $language)
                $languages[$k]['is_default'] = (int)$language['id_lang'] == Configuration::get('PS_LANG_DEFAULT');
            $helper->languages = $languages;

            // Module, token and currentIndex
            $helper->module = $this;
            $helper->name_controller = $this->name;
            $helper->token = Tools::getAdminTokenLite('AdminModules');
            $helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;

            // Language
            $helper->default_form_language = $default_lang;
            $helper->allow_employee_form_lang = $default_lang;

            // Title and toolbar
            $helper->title = $this->displayName;
            $helper->show_toolbar = true;            // false -> remove toolbar
            $helper->toolbar_scroll = true;        // yes - > Toolbar is always visible on the top of the screen.
            $helper->submit_action = 'submit'.$this->name;
            $helper->toolbar_btn = array(
                  'save' =>
                  array(
                            'desc' => $this->l('Save'),
                            'href' => AdminController::$currentIndex.'&configure='.$this->name.'&save'.$this->name.
                            '&token='.Tools::getAdminTokenLite('AdminModules'),
                  ),
                  'back' => array(
                            'href' => AdminController::$currentIndex.'&token='.Tools::getAdminTokenLite('AdminModules'),
                            'desc' => $this->l('Back to list')
                  )
            );

            // Load current value
            $helper->fields_value['MYMODULE_NAME'] = Configuration::get('MYMODULE_NAME');

            return $helper->generateForm($fields_form);
    }
}