我开发了一个显示表单的prestashop模块,现在我想使用POST数据将我的数据存储在数据库中。
按照一些教程我可以显示表单并加载一些js文件,但我的问题是两个:
我的表单的动作参数是什么?
我如何处理post参数,以及??
我的模块的结构是这样的 - 根是/ modules / mymodule / dir:
mymodule.php
/views/templates/hook/mymodule.tpl
/views/js/front.js
我要插入控制器吗?
谢谢。
编辑 - 添加一些代码
mymodule.php
class MyModule extends Module
{
public function __construct()
{
$this->name = 'mymodule';
$this->controllers = array( 'display' ); // <- my controller name
parent::__construct();
}
public function install()
{
if (Shop::isFeatureActive())
Shop::setContext(Shop::CONTEXT_ALL);
if (!parent::install() ||
!$this->registerHook('customCMS') ||
!$this->registerHook('header')
)
return false;
return true;
}
public function hookcustomCMS($params)
{
if (Tools::getValue('id_cms') != 7)
return;
$this->context->smarty->assign(
array(
'form_link' => $this->context->link->getModuleLink('mymodule', 'display')
)
);
return $this->display(__FILE__, 'mymodule.tpl');
}
}
mymodule.tpl
<form id="myform" action="{$link->getModuleLink('mymodule', 'display')|escape:'html'}" method="post">
<!-- all fields... + submit button -->
</form>
display.php(这应该是mymodule / controllers / front中的控制器)
<?php
class mymoduledisaplyFrontController extends ModuleFrontController
{
public function initContent()
{
parent::initContent();
$this->context->controller->addJS($this->module->getLocalPath().'views/js/front.js');
$this->setTemplate('mymodule.tpl');
}
public function postProcess()
{
if (Tools::isSubmit('submit_requestform'))
{
// form processing
ppp("OK");
}
}
}
这就是......
答案 0 :(得分:1)
请在下面找到问题的答案:
表单的操作参数将是
$this->smarty->assign('action', 'index.php?controller=AdminModules&token='.Tools::getAdminTokenLite('AdminModules').'&configure='.$this->name)
您需要在getContent()函数中从控制器(mymodule.php)将其分配给smarty,然后您可以将其用作TPL文件中的操作。
您可以使用以下代码在mymodule.php - getContent()函数中获取post参数的值:
$post_param = Tools::getValue('name_of_parameter');
答案 1 :(得分:0)
要从您必须使用的表单中获取发布的数据
Tools::getValue('PARAM_NAME');
要将数据插入数据库,您应该使用
Configuration::updateValue('PARAM_NAME', Tools::getValue('PARAM_NAME'));
要从params的数据库中获取值,请使用
Configuration::get('PARAM_NAME');
答案 2 :(得分:0)
您无需添加前端控制器。您只需将表单提交到实际的CMS URL并操作hookcustomCMS($ params)函数中的POST数据。
public function hookcustomCMS($params)
{
if (Tools::getValue('id_cms') != 7)
return;
if (Tools::isSubmit('submit_requestform'))
{
//form proccessing
}
$this->context->smarty->assign(
array(
'form_link' => $this->context->link->getModuleLink('mymodule', 'display')
)
);
return $this->display(__FILE__, 'mymodule.tpl');
}
答案 3 :(得分:0)
如果仅获取特定值(POST + GET),则可以使用:
Tools::getValue('param');
如果要从POST + GET获取所有值,请使用:
Tools::getAllValues();
也可以从[prestashop_folder] /class/Tools.php
进行引用