連絡先と登録フォームをカスタマイズする方法を知る必要があります。新しいフィールド ( および ) を追加し、これらのフィールドの情報を必須または不要にする方法。
これらのフォーム用に編集する必要があるファイルを知る必要があります...
prestashop 1.4.7.0 を使用しています
連絡先と登録フォームをカスタマイズする方法を知る必要があります。新しいフィールド ( および ) を追加し、これらのフィールドの情報を必須または不要にする方法。
これらのフォーム用に編集する必要があるファイルを知る必要があります...
prestashop 1.4.7.0 を使用しています
それぞれのケースの処理方法には大きな違いがあるため、これは実際には 2 つの別個の質問です。
登録フォームの場合、2 つのフック ハンドラー関数を含むモジュールを作成できます。これらは次のとおりです。
public function hookCreateAccountForm() {}
public function hookCreateAccount($params) {}
最初の機能を使用すると、登録フォームに追加のフィールドを追加できます (デフォルトでは、これらはフォームの最後に挿入されますauthentication.tpl
が、すべてを単一のグループとして別の場所に移動することもできます)。必要な追加のフォーム html を返すだけです。
2 番目の関数は、アカウント作成プロセスを処理する 2 つのパラメーターを提供します。これは、標準フィールドが検証され、新しい顧客が作成された後に実行されます。残念ながら、これを使用して追加フィールドの検証を行うことはできません (メンバー関数AuthController
で独自の認証を実行するには、JavaScript またはオーバーライドを使用する必要があります)。preProcess()
サイト用の独自のカスタム モジュールの 1 つで、たとえば次のようなものがあります。
public function hookCreateAccount($params)
{
$id_lang = (int)Configuration::get('PS_LANG_DEFAULT');
$customer = $params['newCustomer'];
$address = new Address(Address::getFirstCustomerAddressId((int)$customer->id));
$membership_number = $params['_POST']['membership_number'];
....
....
}
$params['newCustomer']
配列内の標準の Prestashop 要素であり、新しく作成された顧客オブジェクトが含まれています。あなたのフィールドは$params['_POST']
配列になります - 私の場合、それは と呼ばれる入力フィールドでしたmembership_number
。
お問い合わせフォームの場合は、もっと複雑です。HTML の最も簡単な方法は、追加フィールドをテンプレート ファイルにハードコードすることですcontact-form.tpl
。
フォームを実際に処理するには、次のようなファイルを呼び出しContactController.php
て、コントローラーのオーバーライドを作成する必要があります。/<web-root>/<your-optional-ps-folder>/override/controller
<?php
class ContactController extends ContactControllerCore {
function preProcess()
{
if (Tools::isSubmit('submitMessage'))
{
// The form has been submitted so your field validation code goes in here.
// Get the entered values for your fields using Tools::getValue('<field-name>')
// Flag errors by adding a message to $this->errors e.g.
$this->errors[] = Tools::displayError('I haven't even bothered to check!');
}
parent::preProcess();
if (Tools::isSubmit('submitMessage') && is_empty($this->errors))
{
// Success so now perform any addition required actions
// Note that the only indication of success is that $this->errors is empty
}
}
}
もう 1 つの方法は、preProcess 関数全体をコピーして、必要な処理controllers\ContactController
が実行されるまでハッキングすることです。