2016-12-26 5 views
0

Я переопределил AdminCartRulesControllerCore, и я добавил Row Action для AdminCartRulesController и отлично работает.Как настроить действие RowAction в Prestashop AdminController?

$this->addRowAction('Generate'); 

Но я не знаю, как определить действие, которое будет вызываться, когда я нажимаю «Создать». Я знаю, что вам нужно создать ссылку, используя:

public function displayGeneratetLink($token, $id, $name = null) { 
    return '<a href="#" class="download" title="test"><i class="icon-cloud-upload"></i> ' . ($this->l('Export')) . '</a>'; 
} 

В моем случае мне не нужно перенаправление. Мне нужна функция, которую я могу выполнить без какого-либо перенаправления.

+0

PrestaShop версия? –

+0

Prestashop 1.6 версия –

ответ

0

Вы можете сделать свой собственный столбец действий.

Вы должны включать в себя поле идентификатора строки в вашем select:

$this->_select = ' a.id_order AS id_pdf'; 

Затем вы можете включить это новое поле в field list:

$this->fields_list = array(
      /*other fields here*/ 
      'id_pdf' => array(
       'title' => $this->l('Actions'), 
       'width' => 35, 
       'align' => 'center', 
       'callback' => 'printPDFIcons', 
       'orderby' => false, 
       'search' => false, 
       'remove_onclick' => true) 
     ); 

Наконец, вы должны реализовать printPDFIcons функцию. $ Id_order будет ваш идентификатор и $ TR представляет собой массив со всеми данными строки:

public function printPDFIcons($id_order, $tr) 
    { 
     $route_to_pdf = 'for example: route to a pdf file to download it'; 
     if ($route_to_pdf) 
      return '<span class="btn-group-action"> 
         <span class="btn-group"> 
          <a class="btn btn-default" target="_blank" title="' . $this->l('Label PDF') . '" href="' . $route_to_pdf . '"> 
           <i class="icon-print"></i> 
          </a> 
         </span> 
        </span>'; 
     else 
      return ''; 
    } 

Если вы хотите выполнить какое-либо действие при нажатии кнопки в пользовательской кнопки вы должны отображать ссылку на собственный AdminController и проход как Action параметр некоторый идентификатор, как Generate. Затем используйте функцию postProcess для выполнения вашего конкретного кода.

Удачи.

+0

Спасибо за внимание, это ясно. Bu в моем случае я не ищу способ выполнить действие без использования какой-либо ссылки (href). –

2

Следующий пример, чтобы добавить новую акцию под названием «утвердить» в список хелперов:

Вы можете добавить следующую строку кода в конструкторе контроллера администратора.

$this->addRowAction('approve'); 

Ваша функция initProcess() должен иметь следующий код:

public function initProcess() 
    { 
     parent::initProcess(); 
     if (Tools::getIsset('approve' . $this->table)) { 
      $this->action = 'approveAction'; 
     } 
    } 

Затем вы должны определить функцию с именем processApproveAction() в том же контроллере.

public function processApproveAction() 
{ 
--- YOUR CODE HERE --- 
} 

Надеюсь, это поможет.

+0

Привет, спасибо за ваш комментарий, я пробовал это, но я не видел вариант «aprove» в списке Row Action (Edit, Remove). –

+0

В этом случае должна возникнуть проблема с созданным вами списком помощников, поскольку это все, что нам нужно сделать, чтобы сделать работу, и я сделал это во многих моих модулях. – Wolfack

 Смежные вопросы

  • Нет связанных вопросов^_^