Fecha de nacimiento obligatoria en Prestashop 1.7

Fecha de nacimiento obligatoria en Prestashop 1.7

En Prestashop 1.7 la fecha de nacimiento se establece como opcional en el formulario de registro en la tienda. Pero si para tu tienda resulta ser un requisito indispensable ser mayor de edad y quieres que quede recogido durante el formulario de registro como un campo obligatorio, te damos la solución en nuestra nueva entrada de blog.

Cambios en el archivo CustomerFormatter.php

Lo primero que tendrás que hacer es entrar por FTP en la carpeta classes/form/CustomerFormatter.php

Deberás cambiar la linea:

$this->translator->trans(‘(E.g.: %date_format%)’, array(‘%date_format%’ => Tools::formatDateStr(’31 May 1970′)), ‘Shop.Forms.Help’)
)

por

$this->translator->trans(‘(E.g.: %date_format%)’, array(‘%date_format%’ => Tools::formatDateStr(’31 May 1970′)), ‘Shop.Forms.Help’)
)->setRequired(true)

Cambios en el archivo Customer.php

Después no salimos de la carpeta form y nos quedamos en la de classes y ahí hacemos una modificación en el archivo classes/Customer.php

cambia

‘birthday’ => array(‘type’ => self::TYPE_DATE, ‘validate’ => ‘isBirthDate’),

por

‘birthday’ => array(‘type’ => self::TYPE_DATE, ‘validate’ => ‘isBirthDate’, ‘required’ => true),

Cambios en el archivo ObjectModel.php

Ahora nos vamos al archivo classes/ObjectModel.php

Y buscas la linea public function validateController($htmlentities = true)

Deberás añadir el código que te resaltamos debiendo quedar así:

public function validateController($htmlentities = true)
{
$this->cacheFieldsRequiredDatabase();
$errors = array();
$required_fields_database = (isset(self::$fieldsRequiredDatabase[get_class($this)])) ? self::$fieldsRequiredDatabase[get_class($this)] : array();
foreach ($this->def[‘fields’] as $field => $data) {

if ($field==”birthday”){
if (isset($_POST[‘years’]) && isset($_POST[‘months’]) && isset($_POST[‘days’])){
$_POST[‘birthday’]=(empty($_POST[‘years’]) ? ” : (int)Tools::getValue(‘years’).’-‘.(int)Tools::getValue(‘months’).’-‘.(int)Tools::getValue(‘days’));
}
}

$value = Tools::getValue($field, $this->{$field});
// Check if field is required by user
if (in_array($field, $required_fields_database)) {
$data[‘required’] = true;
}

Realizadas todas estas modificaciones en el código verás que ya aparece como obligatoria la casilla de la fecha de nacimiento en prestashop 1.7.