Jump to content

Como agregar placeholders a campos de formulario Presta 1.7.1.1


simchgab

Recommended Posts

Bueno rompiendome un poco el marote para hacer un poco mas intuitivo los formularios, me tope con el problema que en prestashop 1.7.1.1 no se puede modificar los fields de los formularios desde el archivo .tpl.

Para esto tenemos que seguir unos pasos:

Abrir el archivo CustomerFormater.php en un editor de texto (Para los fields del formulario de registro):

Y agregar la siguiente linea al field donde queramos agregarle el placeholder:

 

->addAvailableValue('placeholder', $this->translator->trans('Lo que quieras'))

 

En mi caso Agregue el placeholder "[email protected]" al field email del formulario de registro:

 

 $format['email'] = (new FormField)
            ->setName('email')
            ->setType('email')
            ->setLabel(
                $this->translator->trans(
                    'Email', [], 'Shop.Forms.Labels'
                )
            )
            ->addAvailableValue('placeholder', $this->translator->trans('[email protected]'))
            ->setRequired(true)
        ;
 
 

post-1375128-0-96181400-1496760107_thumb.jpg

  • Like 1
Link to comment
Share on other sites

Hola, seria mejor hacerlo desde el .tpl. En concreto el form-fields.tpl alojado en la carpeta _patials de la plantilla en uso.

 

Justo después del cierre del código del password ({/block}) y antes del {else} añadimos esto:

      {elseif $field.type === 'email'}

        {block name='form_field_item_email'}
          <input
            class="form-control"
            name="{$field.name}"
            type="{$field.type}"
            value="{$field.value}"
            placeholder="{l s='[email protected]' d='Shop.Forms.Help'}"
            {if $field.maxLength}maxlength="{$field.maxLength}"{/if}
            {if $field.required}required{/if}
          >
          {if isset($field.availableValues.comment)}
            <span class="form-control-comment">
              {$field.availableValues.comment}
            </span>
          {/if}
        {/block}

De esta manera no será eliminado al actualizar (siempre y cuando la plantilla no sea la de por defecto y sea actualizada) y aparecerá en todos los campos email de todos los formularios de la tienda.

 

Un saludo

Edited by kik-off (see edit history)
  • Thanks 1
Link to comment
Share on other sites

  • 2 months later...
  • 4 months later...
On 17/8/2017 at 1:04 PM, yogaoutlet said:

Hola,

Estoy complicado con este tema... quisiera agregar un placeholde al campo dni y phonenumber en formulario de de dirección.

Me pude ayudar con eso??? Tengo la vesión 1.7.2

 

Gracias

 

 

Para ese inconveniente, solamente encontré esto (Conviene hacer un override para que al actualizar prestashop no se modifique dicho archivo... Por las dudas guardate un backup)

 

Solución

 

Link to comment
Share on other sites

20 hours ago, simchgab said:

 

Para ese inconveniente, solamente encontré esto (Conviene hacer un override para que al actualizar prestashop no se modifique dicho archivo... Por las dudas guardate un backup)

 

Solución

 

Hola,

Gracias por el enlace hacia mi blog, aunque creo que es basicamente lo mismo que comentastes hace unos meses también en el foro en el primer mensaje. xDDD

Respecto a lo que comenta @kik-off, posiblemente la solución que nos comenta de editar el TPL sea mas adecuada.

-------------------

Por otro lado, creo recordar, que por ejemplo, el "Telefono" del cliente, no es un dato del cliente propiamente sino de la dirección del cliente.

Por lo que quizas, estamos hablando (si decidimos tocar la clase) de la clase:

/classes/form/CustomerAddressFormatter.php (Recordar evitar en lo posible tocar las clases originales)

Y añadir dentro de:

 

 foreach ($fields as $field) {

Esto:

 

		if ($field === 'phone')
			{
			$formField->addAvailableValue('placeholder', $this->translator->trans('Oh My God'));
			}  

Otra opción, quizas es ir al fichero:

 

/themes/classic/templates/customer/_partials/address-form.tpl


---

PD: Esto lo digo a ojo y al menos hasta PS 1.7.2.4, porque supuestamente van a cambiar supuestamente algunas cosillas en el futuro 

Estoy en el movil, y posiblemete se hayan colado erratas.

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

  • 2 months later...
  • 3 months later...

hola, he intentado insertar los placeholder al formulario de direcciones, pero la verdad no funciona, no se ven los resultados en el formulario propiamente tal

alguna idea?

he usado esto: !!

On 22/12/2017 at 3:54 PM, nadie said:

/classes/form/CustomerAddressFormatter.php (Recordar evitar en lo posible tocar las clases originales)

Y añadir dentro de:

 


 foreach ($fields as $field) {

Esto:

 


		if ($field === 'phone')
			{
			$formField->addAvailableValue('placeholder', $this->translator->trans('Oh My God'));
			}  

Otra opción, quizas es ir al fichero:

 


/themes/classic/templates/customer/_partials/address-form.tpl


---

 

Link to comment
Share on other sites

lo arregle... basta solo con ingresar en 

/classes/form/CustomerAddressFormatter.php

despues de :

        foreach ($fields as $field) {
            $formField = new FormField();
            $formField->setName($field);

            $fieldParts = explode(':', $field, 2);

 

lo siguiente: 

if ($field == 'phone')   
{
$formField->addAvailableValue('placeholder',"+56987654321");    
}

 

cabe señalar que :

if ($field == 'phone')    puede ser cualquier FIELD.!! ejemplo vat_number, dni, Etc..

 

Gracias !!!

Link to comment
Share on other sites

En 22/12/2017 a las 1:54 PM, nadie dijo:

Hola,

Gracias por el enlace hacia mi blog, aunque creo que es basicamente lo mismo que comentastes hace unos meses también en el foro en el primer mensaje. xDDD

Respecto a lo que comenta @kik-off, posiblemente la solución que nos comenta de editar el TPL sea mas adecuada.

-------------------

Por otro lado, creo recordar, que por ejemplo, el "Telefono" del cliente, no es un dato del cliente propiamente sino de la dirección del cliente.

Por lo que quizas, estamos hablando (si decidimos tocar la clase) de la clase:

/classes/form/CustomerAddressFormatter.php (Recordar evitar en lo posible tocar las clases originales)

Y añadir dentro de:

 


 foreach ($fields as $field) {

Esto:

 


		if ($field === 'phone')
			{
			$formField->addAvailableValue('placeholder', $this->translator->trans('Oh My God'));
			}  

Otra opción, quizas es ir al fichero:

 


/themes/classic/templates/customer/_partials/address-form.tpl


---

PD: Esto lo digo a ojo y al menos hasta PS 1.7.2.4, porque supuestamente van a cambiar supuestamente algunas cosillas en el futuro 

Estoy en el movil, y posiblemete se hayan colado erratas.

@nadie Seria de ayuda para los novatos como yo encontrar en tu blog como hacer un override. 

 

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...