Кнопки панели инструментов настройки модуля не отображаются в Prestashop 1.6

Я работаю над адаптацией моих пользовательских модулей prestashop к prestashop 1.6. Кнопки панели инструментов на странице конфигурации не отображаются в версии 1.6 (они появляются в версии 1.5), и сообщение об ошибке не выводится.

Панель инструментов в версии 1.5:

Панель инструментов в 1.5

В версии 1.6 нет панели инструментов

В 1.6 нет панели инструментов

Кто-нибудь знает как их в prestashop 1.6 показать? Это фрагмент моего кода, в котором я объявляю панель инструментов:

  $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;
  $helper->toolbar_scroll = true;      // yes - > Toolbar is always visible on the top of the screen.
  $helper->submit_action = 'delete'.$this->name;
  $this->uri = ToolsCore::getCurrentUrlProtocolPrefix() .$this->context->shop->domain_ssl.$this->context->shop->physical_uri;
  $helper->toolbar_btn = array(
      'import' => array(
          'desc' => $this->l('Descargar CSV'),
          'href' =>$this->uri. 'modules/' . $this->getName() . '/excel.csv',
      ),
      'delete' => array(
          'desc' => $this->l('Borrar CSV'),
          'href' => AdminController::$currentIndex.'&configure='.$this->name.'&delete'.$this->name.
          '&token='.Tools::getAdminTokenLite('AdminModules'),
      ),
      'back' => array(
          'href' => AdminController::$currentIndex.'&token='.Tools::getAdminTokenLite('AdminModules'),
          'desc' => $this->l('Back to list')
      )
 );

Заранее спасибо.


person Alfonso Jiménez    schedule 25.04.2014    source источник


Ответы (3)


После некоторого исследования я попытался использовать HelperList вместо HelperForm, и кнопки панели инструментов появляются, но в заголовке списка, а не в зеленой области.

С другой стороны, HelperForm предоставляет массив «кнопок» (я не уверен, было ли это изменение Prestashop 1.6 или оно было в версиях 1.5.x), которые появляются слева от кнопки отправки в своего рода панели инструментов под форма. buttons

$this->fields_form[0]['form'] = array(
    'tinymce' => true,
    'legend' => array(
        'title' => $this->l('New test block'),
    ),
    'input' => array(
        array(
            'type' => 'textarea',
            'label' => $this->l('Text'),
            'lang' => true,
            'name' => 'text',
            'cols' => 40,
            'rows' => 10,
            'class' => 'rte',
            'autoload_rte' => true,

        )
    ),
    'submit' => array(
        'title' => $this->l('Save'),
    ),
    'buttons' => array(
        array(
            'href' => AdminController::$currentIndex.'&configure='.$this->name.'&token='.Tools::getAdminTokenLite('AdminModules'),
            'title' => $this->l('Back to list'),
            'icon' => 'process-icon-back'
        )
    )
);

Я полагаю, что поведение и цель панели инструментов изменились вместе с новой бэкэнд-темой.

person Alfonso Jiménez    schedule 28.04.2014

Я помогал исправлять модуль, который мы разработали для prestashop, и это была одна из обнаруженных нами ошибок. Если вы хотите отображать какую-либо информацию на зеленой полосе, вам нужно будет использовать свойство $ page_header_toolbar_btn из расширения класса AdminCrontrollerCore, который находится в «/ classes / controller», пока команда prestashop не исправит ошибку, о которой я сообщу. Если вы хотите, чтобы ваш плагин был совместим со старой версией, вам нужно будет использовать глобальную переменную _PS_VERSION.

Изменить: https://github.com/PrestaShop/PrestaShop/pull/2065 запрос на перенос, чтобы устранить ошибку.

Вот мой пример кода:

    class AdminOrdersController extends AdminOrdersControllerCore
    {

    .....  

    public function initToolbar()
    {
    if ($this->display == 'view' && $this->_order->module == 'mymodule') {
            if ($this->_mymodule->isOrderComplete($this->_order)) {
                $mymodule_return = array(
                    'short' => $this->l('mymodule account'),
                    'href' => self::$currentIndex . '&id_order=' . $this->_order->id . '&vieworder&return_mymodule=1&token=' . $this->token,
                    'desc' => $this->l('return to mymodule'),
                    'class' => 'process-icon-standardreturn mymodule-return',
                );
                $mymodule_partial_return = array(
                    'short' => 'return customer mymodule account',
                    'href' => '#',
                    'desc' => $this->l('return to mymodule'),
                    'class' => 'process-icon-partialreturn',
                );

                //Depend of the prestashop version, we use $toolbar_btn[]
                // or we use $page_header_toolbar_btn[]
                if (_PS_VERSION_ > '1.5') {
                    $mymodule_return['class'] = "process-icon-delete mymodule-return";
                    $this->page_header_toolbar_btn['return_mymodule'] = $mymodule_return;

                } else {
                    $this->toolbar_btn['return_mymodule'] = $mymodule_return;
                    $this->toolbar_btn['return_mymodule_partial'] = $mymodule_partial_return;
                }
            }
        }      
    }  
   }        
person Dazag    schedule 22.08.2014

Я также ищу способ отображения кнопок в HelperList, но я хочу, чтобы они отображались в нижнем колонтитуле панели.

Единственная кнопка, которая работает таким образом, - это кнопка back.

    $helperList->toolbar_btn = array(
        'back' => array(
            'href' => $this->context->link->getAdminLink('AdminModules').'&configure='.$this->name.'&add_new_feed=1',
            'desc' => $this->l('New Feed')
    ));

кнопка prestashop

Очевидно, что недостаток в иконке, которая не соответствует назначению.

person Rudolf Gröhling    schedule 08.06.2014