Prestashop错误“无效的安全令牌”

时间:2014-03-20 08:15:33

标签: php security module prestashop

我为prestashop 1.5.6创建了一个新模块,并且我遇到了一些问题。

模块必须向客户发送短信,并且必须是后台菜单的选项。

我创建了带有安装和卸载功能的模块,并将标签添加到back-office菜单,但我是prestashop中的新手,所以我不知道如何制作{{1}当我尝试单击模块的标签AdminMyModuleController.php时,我不知道如何解决这个问题,因为我不太了解安全性。

如果有人可以加我在facebook或其他什么来帮助我会很棒。

以下是mymodule.php的代码:

私有函数_createTab()   {

"INVALID SECURITY TOKEN"

//定义选项卡多语言数据     $ data_lang = array(                      'id_tab'=> $ id_tabP,                      'id_lang'=>配置::得到( 'PS_LANG_DEFAULT'),                      'name'=> 'SMS a clientes'                      );

// Tab Raiz

   $data = array(
              'id_tab' => '', 
              'id_parent' => 0, 
              'class_name' => 'Empty', 
              'module' => 'mymodule', 
              'position' => 14, 'active' => 1 
             );

/* Insert the data to the tab table*/
$res = Db::getInstance()->insert('tab', $data);

//Get last insert id from db which will be the new tab id
$id_tabP = Db::getInstance()->Insert_ID();

}

由于

2 个答案:

答案 0 :(得分:0)

这是创建模块选项卡的错误方法。您应该在install()中使用此函数:

$this->installModuleTab('AdminMyModule', array(1 => 'Attribute description'), $idTabParent = 9);

然后在模块文件夹/ controllers / admin / AdminMyModuleController.php中创建一个AdminMyModuleController.php

但你需要设置一些功能才能看到显示的内容,我会为此做一个教程,但在我这样做之前,你可以从prestashop核心查看另一个admincontroller并做同样的事情。

答案 1 :(得分:0)

正如Lliw所说,你必须使用InstallModuleTab函数。

private function installModuleTab($tabClass, $tabName, $idTabParent)
{
    $pass = true;
    $tab = new Tab();
    $tab->name = $tabName;
    $tab->class_name = $tabClass;
    $tab->module = $this->name;  // defined in __construct() function
    $tab->id_parent = $idTabParent;
    $pass = $tab->save();

    return($pass);
}

您可以将所有内容放入Install功能中。例如,您的第一个标签:

public function install()
{
    if(!parent::install()
        || !$this->installModuleTab('Empty', array(1 => 'SMS a clientes'), $idTabParent = 0))
        return false;

    return true;
}

您可以使用以下数组设置语言:

array(1 => 'SMS a clientes', 2 => 'Language 2', 3 => 'Language 3')

然后您必须创建AdminMyModuleController.php文件