Adjuntar ficheros en el formulario de registro en Prestashop

Permitir que el usuario pueda enviar un fichero en el formulario de registro en Prestashop

El módulo permite que el usuario que se registre en la tienda pueda enviar en ese momento un documento para poder recibirlo nosotros.

Esta desarrollado por Hennes Hervé al igual que el módulo que permitía asignar automaticamente grupos en base a condiciones del registro de clientes.

La instalación y subida del módulo, sin problemas, desde la pestaña módulos -> módulos.

Instalando módulo que nos permitirá que el cliente en el momento de registrarse pueda enviar un documento

El módulo, no tiene ninguna opción de configuración en el panel.

Analizamos varias partes del código del módulo:

En el fichero:

modules/hhregistration/hhregistration.php

Vemos que tenemos un atributo privado de la clase del módulo llamado: _registration_allowed_extensions con este contenido:

array('pdf','doc','docx','jpg','png','gif','txt');

Esta son las extensiones de los ficheros que están permitidos subir, podemos añadir nuevas, o cambiarlas.

También, vemos que tenemos otro atributo privado de la clase llamado $_upload_dir ques donde indicamos el directorio donde se guardaran los ficheros que sube el cliente en el formulario de registro. En nuestro caso particular tiene asignado el directorio “files” que tenemos dentro del módulo.

Vemos que el módulo se registra en dos hooks (lo podemos ver dentro de la función install() )

  • displayCustomerAccountForm -> Muestra el campo nuevo en el formulario del registro (el hook esta disponible en el formulario de registro, por eso el dato que vamos añadir en este hook se vera luego en el formulario de registro)
  • actionCustomerAccountAdd -> Se ejecuta automáticamente cuando el usuario crea una cuenta en la tienda.

¿Qué contenido tiene la función del hook -> actionCustomerAccountAdd en nuestro caso particular?

Lo que hacemos es recoger el fichero que enviamos en el formulario de registro y guardarlo en el directorio “files” que esta dentro del mismo directorio del módulo.

¿Qué contiene tiene la función del hook -> displayCustomerAccountForm en nuestro caso particular?

Tiene simplemente el return al tpl que tiene el nuevo campo del fichero que luego aparecerá en el formulario del registro.

return $this->display(__FILE__, 'hookDisplayCustomerAccountForm.tpl');
  • ¿Qué contiene el fichero: hookDisplayCustomerAccountForm.tpl?
  • <div class="form-group">
    <label for="file-input">{l s='Justificatif Professionnel' mod='hhregistration'}</label>
    <input type="file" name="file_input" />
    </div>
    

    Simplemente contiene el campo “nuevo”  que se mostrara en el formulario del registro.

Ahora se muestra ya el nuevo campo en el formulario de registro, pero os falta el detalle de cambiar en el fichero:

/themes/default-bootstrap/authentication.tpl

Esta línea:


<form action="{$link->getPageLink('authentication', true)|escape:'html':'UTF-8'}" method="post" id="account-creation_form" class="std box">

por


<form action="{$link->getPageLink('authentication', true)|escape:'html':'UTF-8'}" method="post" id="account-creation_form" class="std box" enctype="multipart/form-data">

Hemos “añadido” en el form la siguiente instrucción: enctype=”multipart/form-data” para permitir que el formulario pueda enviar ficheros.

Recordar que los ficheros que el usuario enviar al registrarse en la tienda se guardan en el directorio: “modules/hhregistration/files/

¿Dónde puedo descargar el módulo actualizado que añade un campo nuevo en el formulario de registro que permite al usuario que se registra en tu tienda enviar un fichero y estar al tanto de las novedades de ese módulo?

  • https://github.com/nenes25/prestashop_hhregistration/
  • http://www.h-hennes.fr/blog/2016/02/18/prestashop-envoyer-des-fichiers-lors-de-la-creation-du-compte-client/

Evidentemente en la versión actual del módulo no estamos comprobando el cliente que ha enviado el fichero, al menos en la versión actual del módulo, el módulo simplemente podríamos decir que sirve para probarlo y testear el funcionamiento de los dos hooks que usa el módulo

Documento construido bajo Prestashop 1.6.1.14 y la versión “0.1.1” del módulo.