我开发了一个显示表单的prestashop模块,现在我想使用POST数据将我的数据存储在数据库中。Prestashop在自定义CMS表格中处理发布数据
以下一些教程,我能够显示表格,加载一些js文件,但我的问题有两个:
什么将是我表单的动作参数?
我如何处理帖子参数,以及在哪里?
我的模块的结构是这样的 - 根/模块/ 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的/控制器/前面的控制器)
<?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");
}
}
}
这一切......
这是什么形式?模块配置?首页?管理页面?如果它是首页或管理页面,那么你需要一个控制器。您需要提供更多信息和一些代码,以便我们可以进一步帮助您。 – TheDrot
@TheDrot我编辑了添加我的代码的帖子。应该是前端控制器。我的范围是添加一个表单,其中包含一些字段和逻辑,并将数据存储在数据库中。我省略了一些无用的代码,如配置。 – Jack
控制器的类声明是错误的。看看[这里](http://stackoverflow.com/questions/40491693/prestashop-module-with-controller-throws-404/40492153#40492153)适当的声明。 – TheDrot