Jump to content

Ayuda con Samrty para visualizar un nuevo valor!


ionix

Recommended Posts

Hola, estoy aquí nuevamente, he seguido una serie de tutoriales que me he encontrado navegando y me han servido de referencia, tengo los campos funcionando al 100% pero tiene un pequeño detalle.
 
He creado dos campos que se muestran al registro del cliente y estos son visibles en autentication.tpl (las cajas)
Tengo las clases y los controladores funcionado,
 
El cliente ingresa los campos solicitados y los datos se guardan en una nueva tabla que he creado, pero ahi el problema.
 
He establecido este mismo campo en identity.tpl para que se visualicen, pero no aparece nada. (Me coge los datos pero no los visualiza)
 
Creo que no me he explicado bien. Trabajo con prestashop 1.6.1.1
 
He agregado lo siguiente hasta ahora:

 

(Añadir nuevos campos al registro de clientes.)
 
En autentication.tpl 
 

<label for="nuevo_campo1">{l s='Nuevo Campo'}</label>
<input class="text" id="nuevo_campo1" type="text" name="nuevo_campo1" />

<label for="nuevo_campo2">{l s='Nuevo Campo'}</label>
<input class="text" id="nuevo_campo2" type="text" name="nuevo_campo2" />

En controllers/front/AuthController.php (Inicia en la Linea 401)

        // Preparing customer
        $customer = new Customer();
        $lastnameAddress = Tools::getValue('lastname');
        $firstnameAddress = Tools::getValue('firstname');
        $nuevo_campo1= Tools::getValue('nuevo_campo1');
        $nuevo_campo2= Tools::getValue('nuevo_campo2');

También esto (Inicia en la Linea 441)

                $customer->firstname = Tools::ucwords($customer->firstname);
                $customer->birthday = (empty($_POST['years']) ? '' : (int)Tools::getValue('years').'-'.(int)Tools::getValue('months').'-'.(int)Tools::getValue('days'));
                if (!Validate::isBirthDate($customer->birthday)) {
                    $this->errors[] = Tools::displayError('Invalid date of birth.');
                    $customer->nuevo_campo1 = $nuevo_campo1;
                    $customer->nuevo_campo2 = $nuevo_campo2;
                }

esto (Inicia en la Linea 570)

            $customer->birthday = (empty($_POST['years']) ? '' : (int)Tools::getValue('years').'-'.(int)Tools::getValue('months').'-'.(int)Tools::getValue('days'));
            if (!Validate::isBirthDate($customer->birthday)) {
                $this->errors[] = Tools::displayError('Invalid date of birth');
                $customer->nuevo_campo1 = $nuevo_campo1;
                $customer->nuevo_campo2 = $nuevo_campo2;
            }

y esto (Inicia en la Linea 720)

        $this->context->customer = $customer;
        $this->context->smarty->assign('confirmation', 1);
        $this->context->cookie->id_customer = (int)$customer->id;
        $this->context->cookie->customer_nuevo_campo1 = $customer->nuevo_campo1;
        $this->context->cookie->customer_nuevo_campo2 = $customer->nuevo_campo2;

En classes/Customer.php (Inicia en la Linea 29)

    public $id;

/** @ var string Referralcode */

    public $nuevo_campo1;

    public $nuevo_campo2;

Y esto (Inicia en la Linea 157)

 public static $definition = array(
        'table' => 'customer',
        'primary' => 'id_customer',
        'fields' => array(
        'secure_key' => array('type' => self::TYPE_STRING, 'validate' => 'isMd5', 'copy_post' => false),
        'lastname' => array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),
         'firstname' => array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),
         'email' => array('type' => self::TYPE_STRING, 'validate' => 'isEmail', 'required' => true, 'size' => 128),
         'passwd' => array('type' => self::TYPE_STRING, 'validate' => 'isPasswd', 'required' => true, 'size' => 32),
         'nuevo_campo1' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName'),
         'nuevo_campo2' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName'),

en controllers/admin/AdminCustomersController.php (Inicia en la Linea 145)

  'connect' => array(
  'title' => $this->l('Last visit'),
  'width' => 100,
  'type' => 'datetime',
  'search' => false,
  'havingFilter' => true
  ),
  'nuevo_campo1' => array(
  'title' => $this->l('nuevo campo1'),
  'width' => 'auto',
  'search' => true
  ),
  'nuevo_campo2' => array(
  'title' => $this->l('nuevo campo2'),
  'width' => 'auto',
  'search' => true
  )
        ));

Para finalizar he creado las tablas de la siguiente forma: (Como no sabia como crear las dos de un solo tiro, realice dos consultas) 

ALTER TABLE `ps_customer` ADD `nuevo_campo1` VARCHAR( 25 )
ALTER TABLE `ps_customer` ADD `nuevo_campo2` VARCHAR( 25 )

Hasta aqui todo perfecto. Me nuestra el nuevo campo en el back office y cuando el cliente se registra, me coge los datos de manera correcta, pero hay un problema, como puede el cliente editar estos datos, ya que me coge los datos pero al entrar al perfil "Datos personales" solo me aparece los campos vacios.
 
Se que debe ser por Smarty, pero no tengo ni idea que debo hacer.... Una ayudita no estaría demás :)
 
Asi otras personas sabrán como realizarlo, y no tendrán que buscar tanto como yo :D
 
Aqui una imagen del backoffice
post-1075801-0-90159200-1445530771_thumb.png
qui otra desde el registro de usuarios
post-1075801-0-00636000-1445531174_thumb.png
Aqui desde la vista del cliente
post-1075801-0-60257000-1445531023_thumb.png

Edited by ionix (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...