Php 如何在Prestashop AdminController中自定义RowAction的操作?

Php 如何在Prestashop AdminController中自定义RowAction的操作?,php,prestashop,Php,Prestashop,我重写了AdminCartRulesControllerCore,并向AdminCartRulesController添加了一个行操作,效果很好 $this->addRowAction('Generate'); 但我不知道如何定义当我按下“Generate”时将调用的操作。我知道可以使用以下方法创建链接: public function displayGeneratetLink($token, $id, $name = null) { return '<a href="#"

我重写了AdminCartRulesControllerCore,并向AdminCartRulesController添加了一个行操作,效果很好

$this->addRowAction('Generate');
但我不知道如何定义当我按下“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>';
}
public函数displayGenerateLink($token、$id、$name=null){
返回“”;
}

就我而言,我不需要重定向。我需要一个无需任何重定向即可执行的函数。

您可以执行自己的操作列

您应该在
选择中包含行标识符字段:

$this->_select = ' a.id_order AS id_pdf';
然后,您可以将此新字段包括在
字段列表中:

$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 '';
    }
公共函数打印版本($id\u order,$tr)
{
$route_to_pdf='例如:路由到pdf文件以下载它';
如果($route_to_pdf)
返回'
';
其他的
返回“”;
}
如果要在单击自定义按钮时执行某些操作,则应显示指向自己的
AdminController
的链接,并作为
action
参数传递一些标识符,如
Generate
。然后使用
postProcess
函数执行特定代码


祝你好运。

你可以做你自己的行动专栏

您应该在
选择中包含行标识符字段:

$this->_select = ' a.id_order AS id_pdf';
然后,您可以将此新字段包括在
字段列表中:

$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 '';
    }
公共函数打印版本($id\u order,$tr)
{
$route_to_pdf='例如:路由到pdf文件以下载它';
如果($route_to_pdf)
返回'
';
其他的
返回“”;
}
如果要在单击自定义按钮时执行某些操作,则应显示指向自己的
AdminController
的链接,并作为
action
参数传递一些标识符,如
Generate
。然后使用
postProcess
函数执行特定代码


祝你好运。

以下示例是将一个名为“批准”的新操作添加到帮助者列表中:

您可以在管理员控制器的构造函数中添加以下代码行

$this->addRowAction('approve');
public function processApproveAction()
{
--- YOUR CODE HERE ---
}
initProcess()函数应具有以下代码:

public function initProcess()
    {
        parent::initProcess();
        if (Tools::getIsset('approve' . $this->table)) {
            $this->action = 'approveAction';
        }
    }
然后必须在同一控制器中定义一个名为processApproveAction()的函数

$this->addRowAction('approve');
public function processApproveAction()
{
--- YOUR CODE HERE ---
}

希望这能有所帮助。

以下示例是将一个名为“批准”的新操作添加到帮助者列表中:

您可以在管理员控制器的构造函数中添加以下代码行

$this->addRowAction('approve');
public function processApproveAction()
{
--- YOUR CODE HERE ---
}
initProcess()函数应具有以下代码:

public function initProcess()
    {
        parent::initProcess();
        if (Tools::getIsset('approve' . $this->table)) {
            $this->action = 'approveAction';
        }
    }
然后必须在同一控制器中定义一个名为processApproveAction()的函数

$this->addRowAction('approve');
public function processApproveAction()
{
--- YOUR CODE HERE ---
}

希望这能有所帮助。

PrestaShop版本?PrestaShop 1.6版本PrestaShop版本?PrestaShop 1.6版本感谢您的努力。Bu在我的例子中,我不是在寻找一种不使用任何链接(href)执行操作的方法。感谢您的努力,这很清楚。Bu在我的情况下,我不是在寻找一种不使用任何链接(href)执行操作的方法。您好,感谢您的评论,我尝试了这个方法,但在行操作列表(编辑、删除)中没有看到“aprove”选项。在这种情况下,你生成的帮助列表一定有问题,因为这是我们要做的全部工作,我在我的许多模块中都做过。同样,我看不到新的操作链接,我应该在模块中声明帮助列表吗?嗨,谢谢你的评论,我试过了,但没有看到“aprove”选项在行操作列表中(编辑,删除)。在这种情况下,您生成的帮助器列表一定有问题,因为这是我们要做的全部工作,我在我的许多模块中都做过。在这里,同样,我看不到新的操作链接,我应该在模块中的何处声明帮助器列表?