1

Prestashop サイトを構築しています

法人購入者は、登録時に有効な EIN 番号または有効な Duns & Brandstreet 番号を入力できない限り、アカウントに登録して製品を表示することはできません。

それを可能にする方法は?

また、これに切り替えることでこれを解決するのに役立つ他の電子商取引ソフトウェアはありますか?

4

1 に答える 1

1

実際に行う必要があるのは、フィールドをテンプレートに追加してから、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()の単純なテストまたは追加関数によって同様に可能です。AuthController2 つのフィールド (つまり、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...
}

ここからアカウントの作成を取り消す方法はないので、問題が発生した場合にストアの所有者に電子メールを送信するコードを追加することをお勧めします。

于 2012-08-07T06:56:48.433 に答える