フォームを表示するプレスタシュモジュールを開発しましたが、POSTデータを使用してデータをデータベースに保存します。私は、フォームを表示し、いくつかのjsファイルをロードすることができるよいくつかのチュートリアル後PrestashopカスタムCMSフォームのデータを投稿する
が、私の質問は2つです:
私のフォームのactionパラメータになりますか?
投稿パラメータはどのように処理できますか?
mymodule.php
/views/templates/hook/mymodule.tpl
:モジュール/のmymodule /ディレクトリ/ rootです -
私のモジュールの構造は、これがあります
/views/js/front.js
コントローラーを挿入しましたか?
ありがとうございます。
編集 - (これはMyModuleという/コントローラ/前にコントローラでshoul
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いくつかのコードを追加します)
<?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投稿を編集して自分のコードを追加しました。フロントコントローラーでなければなりません。私の範囲は、いくつかのフィールドとロジックを含むフォームを追加し、そのデータをデータベースに格納することです。私はconfigsのような不自然なコードをいくつか省略しました。 – Jack
コントローラのクラス宣言が間違っています。適切な宣言については、[こちら](http://stackoverflow.com/questions/40491693/prestashop-module-with-controller-throws-404/40492153#40492153)をご覧ください。 – TheDrot