Prestashop サイトを構築しています
法人購入者は、登録時に有効な EIN 番号または有効な Duns & Brandstreet 番号を入力できない限り、アカウントに登録して製品を表示することはできません。
それを可能にする方法は?
また、これに切り替えることでこれを解決するのに役立つ他の電子商取引ソフトウェアはありますか?
Prestashop サイトを構築しています
法人購入者は、登録時に有効な EIN 番号または有効な Duns & Brandstreet 番号を入力できない限り、アカウントに登録して製品を表示することはできません。
それを可能にする方法は?
また、これに切り替えることでこれを解決するのに役立つ他の電子商取引ソフトウェアはありますか?
実際に行う必要があるのは、フィールドをテンプレートに追加してから、AuthController
新しいフィールドを処理する追加のコードでオーバーライドすることだけです。例えば
<?php
class AuthController extends AuthControllerCore
{
public function preProcess()
{
// Additional pre-processing for the new form field
if (Tools::isSubmit('submitAccount'))
{
if (!MyDBNumberValidationClass::verifyvalidnumber(Tools::getValue('db_number_field', 0)))
$this->errors[] = Tools::displayError('The Dun and Bradstreet number you entered is invalid.');
}
parent::preProcess();
}
}
上記の静的呼び出しが理由である番号の複雑な検証を行っていると想定していますが、検証する上記のオーバーライドクラス定義MyDBNumberValidationClass::verifyvalidnumber()
の単純なテストまたは追加関数によって同様に可能です。AuthController
2 つのフィールド (つまり、EIN 番号も) を追加する場合は、ロジックを変更して、両方が無効な場合にのみエラーの生成を処理します。$this->errors
フォーム検証の成功は、空であることに基づいています。
これは、追加フィールドの検証のみを処理するため、一般的なソリューションの一部にすぎません。入力されたデータで実際に何かをする必要がある場合、最善の方法は、それ自体をインストールする小さなハンドラ モジュールを作成することですhookCreateAccount
。
public function hookCreateAccount($params)
{
// Get the field data entered on the form
$DB_number = $params['_POST']['db_number_field'];
// Your custom processing...
}
ここからアカウントの作成を取り消す方法はないので、問題が発生した場合にストアの所有者に電子メールを送信するコードを追加することをお勧めします。