Prestashop 请求前中间件

Prestashop 请求前中间件,prestashop,prestashop-1.6,Prestashop,Prestashop 1.6,我正在尝试为Prestashop 1.6构建一个模块,如果目标URL存在于数据库中,该模块将重定向用户 我要做的是: public function checkRedirection ($url) { $line = Db::getInstance()->executeS('SELECT * FROM ps_custom_redirection WHERE url = ' . pSQL($url)); if (!sizeof($line)) { retur

我正在尝试为Prestashop 1.6构建一个模块,如果目标URL存在于数据库中,该模块将重定向用户

我要做的是:

public function checkRedirection ($url) {
    $line = Db::getInstance()->executeS('SELECT * FROM ps_custom_redirection WHERE url = ' . pSQL($url));

    if (!sizeof($line)) {
        return null;
    }

    header('Location: ' . $line[0]['destination']);
    http_response_code($line[0]['http_code']);
    exit();
}
现在,我可以在启动
displayTop
hook时运行此函数。但我宁愿在请求过程的开始启动此功能


Prestashop是否提供了这样一个挂钩?如果没有,我可以创建一个吗?我应该在哪里编写代码来启动它?

执行的第一个钩子是
actionDispatcher
——如果需要,您可以使用它

您将在
/classes/Dispatcher.php
中找到这个钩子。搜索代码
Hook::exec('actionDispatcher',$params\u Hook\u action\u dispatcher)

如果要将此挂钩添加到模块中,则需要在主模块文件中使用其名称,如下所示:

public函数安装(){
返回父::安装()
&&$this->registerHook('actionDispatcher');
}

公共函数hookActionDispatcher($params){
//你的代码
工具::重定向($url);
}


在Prestashop
Tools::redirect($url)中用于重定向。

感谢您的回复。在我的
ps\u hook
表中找不到
actionDispatcher
是否正常?是的。如果您没有向这个钩子添加任何内容,那么数据库表
ps_hook
@Hammerbot不会依赖数据库条目来查找钩子,而是在prestashop文件中搜索
hook::exec
{hook h=
,以查找所有可用的钩子。