非常基本"创建你的第一个模块"教程失败。怎么样?

时间:2015-07-11 02:50:40

标签: prestashop prestashop-1.6

所以我关注Prestashop发布的hand-holding guide(引用他们的helper classes),但它不起作用。

由于所有其他"如何制作模块"问题只是指向那里,我无法快速。

在这个问题的底部是我到目前为止的代码并且我没有得到特定的错误,但是我没有看到*在所需字段旁边的承诺。当我添加

'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);
  }
}

1 个答案:

答案 0 :(得分:1)

您必须进行以下修改:

$this->bootstrap = true;

$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;

完整代码:

<?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);
    }
}