我開發了一個顯示錶單的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