Sheik797
Sheik797

Reputation: 535

Prestashop Add extra fields to registration form

I am building a prestashop site

The corporate buyers cannot register for an account to view the products unless they can enter a valid EIN number or a valid Duns & Brandstreet number in registration.

How to make it possible?

Also any other e-commerce software that can help me solve this by switching to it?

Upvotes: 1

Views: 2286

Answers (1)

Paul Campbell
Paul Campbell

Reputation: 1145

All you really need to do is add the field to the template and then override the AuthController with additional code to handle you new field. e.g.

<?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();
  }
}

I'm assuming that you're doing complex verification of the number which is why the static call to MyDBNumberValidationClass::verifyvalidnumber() is in the above, but it could equally by any simple test or an additional function in your AuthController override class definition above that validates. If you add two fields (i.e. the EIN number too) then just alter the logic to handle generating an error only if both are invalid; success of the form validation is based on $this->errors being empty.

This is only part of a general solution since it only handles validating the extra fields. If you need to actually do something with the data entered then the best way is to write a little handler module that installs itself on hookCreateAccount e.g.

public function hookCreateAccount($params)
{
  // Get the field data entered on the form
  $DB_number = $params['_POST']['db_number_field'];

  // Your custom processing...
}

Note that there's no way to back out of the account creation from here so you will want to add code to email the store owner should there be a problem.

Upvotes: 1

Related Questions