我覆盖了AdminCartRulesControllerCore,我向AdminCartRulesController添加了一个Row Action,并且工作正常。
$this->addRowAction('Generate');
但我不知道如何定义当我按下“Generate”时将调用的Action。我知道使用以下方法创建链接:
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 :(得分:1)
以下示例是添加一个名为&#39; approve&#39;的新操作。到帮助者列表:
您可以在管理员控制器的构造函数中添加以下代码行。
$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 ---
}
希望这有帮助。
答案 1 :(得分: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
。然后使用private static Point location = null;
private void MyForm_Move(object sender, EventArgs e)
{
location = this.Location;
}
private void MyForm_Load(object sender, EventArgs e)
{
if (location != null) { this.Location = location; }
}
函数执行您的特定代码。