Obligar a poner 2 apellidos en el formulario de registro

Cuando un nuevo usuario se registra en prestashop sólo se la pide un apellido, pero esto es un rollo para los envíos ya que necesitamos los dos apellidos. Para ello en vez de crear un nuevo campo para el segundo apellido, lo que vamos a hacer es decirle que meta en lastname los 2 campos concatenados.

En el archivo «/public_html/themes/tema que estas usando/authentication.tpl» encuentra estas lineas:

<div class="required form-group">
	<label for="customer_lastname">{l s='Last name'} <sup>*</sup></label>
	<input onkeyup="$('#lastname').val(this.value);" type="text" class="is_required validate form-control" data-validate="isName" id="customer_lastname" name="customer_lastname" value="{if isset($smarty.post.customer_lastname)}{$smarty.post.customer_lastname}{/if}" />
</div>

Y sustituyelas por estas:

<div class="required form-group">
	<label for="customer_lastname">{l s='Primer Apellido'} <sup>*</sup></label>
	<input onkeyup="$('#lastname').val(this.value);" type="text" class="is_required validate form-control" data-validate="isName" id="customer_lastname" name="customer_lastname" value="{if isset($smarty.post.customer_lastname)}{$smarty.post.customer_lastname}{/if}" />
</div>
<div class="required form-group">
	<label for="customer_maternal_lastname">{l s='Segundo Apellido'}<sup>*</sup></label>
	<input onkeyup="$('#lastname').val((customer_lastname.value) + ' ' + (this.value));" type="text" class="is_required validate form-control" data-validate="isName" id="customer_maternal_lastname" name="customer_maternal_lastname" value="{if isset($smarty.post.customer_maternal_lastname)}{$smarty.post.customer_maternal_lastname}{/if}" />
</div>

Con esto hemos conseguido crear un campo con referencia customer_maternal_lastname con el texto «Segundo Apellido» y un * que indicará al cliente que es OBLIGATORIO <sup>*</sup>

 

A continuación vamos al archivo /controllers/front/AuthController.php

Aunque creo que lo suyo sería hacer un override en /override/controllers/front/AuthController

Y cambiamos esto (en mi caso la linea 386)

// Preparing customer
$customer = new Customer();
$lastnameAddress = Tools::getValue('lastname');
$firstnameAddress = Tools::getValue('firstname');		
$_POST['lastname'] = Tools::getValue('customer_lastname');
$_POST['firstname'] = Tools::getValue('customer_firstname');

Por esto:

  // Preparing customer
        $customer = new Customer();
	$lastnameAddress = Tools::getValue('lastname');
	$firstnameAddress = Tools::getValue('firstname');
	$_POST['lastname'] = Tools::getValue('customer_lastname') . ' ' . Tools::getValue('customer_maternal_lastname');
	$_POST['firstname'] = Tools::getValue('customer_firstname');