Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/05/2014, 12:39
mortisdj
 
Fecha de Ingreso: mayo-2014
Ubicación: Valencia
Mensajes: 63
Antigüedad: 7 años, 4 meses
Puntos: 0
Varios select en un mismo campo. (Prestashop)

Buenas, primero explico el problema y después como lo tengo...

A ver.. correos nos ha mandado un modulo en el que solo pilla el campo de address del prestashop, el problema, es que hay mucha gente que al comprar, lo rellena mal, y hemos añadido los campos vía, número y puerta, para facilitar que a la hora de poner la dirección, se haga bien.

Ahora bien, a la hora de usar ese modulo de correos para sacar las etiquetas desde prestashop, sólo pilla el campo address, lo cual es un impedimento, ya que si se envían con esas etiquetas, no llegaría ningún paquete, con el considerable mosqueo del cliente y los costes de volverlo a enviar, :S

En vez de llegar a la "Calle las barcas 12, 12", llegaría a una dirección que se llamara "las barcas", dirección que no existe, obviamente, ya que no tiene ni tipo de vía, ni número, ni puerta.

Por el momento, tengo correctamente que a la hora de ingresar los datos se haga en los campos address1, vía, numero y puerta de la tabla ps_address.

Ahora bien, lo qe necesito es juntar esos valores en el campo address1

Si por ejemplo ingresan...

via: Calle
address1: Las Barcas
número: 7
puerta: 36

Se haga en el campo address1 como "Calle Las Barcas 7, 36"

Tengo habilitado el pedido rápido y esto es lo que tengo puesto...

en authentification.tpl

Código:
{elseif $field_name eq "via"}
<label for="via">{l s='Tipo de vía'} <sup>*</sup></label>
<div></div>
<select id="via" name="via">	
<option selected="selected">Seleccione su tipo de vía</option>	
<option value="Alameda">Alameda</option>
<option value="Autopista">Autopista</option>
<option value="Autovia">Autovía</option>	
<option value="Avenida">Avenida</option>
<option value="Barriada">Barriada</option>
<option value="Bulevar">Bulevar</option>
<option value="Calle">Calle</option>	
<option value="Camino">Camino</option>
<option value="Carretera">Carretera</option>
<option value="Glorieta">Glorieta</option>	
<option value="Partida">Partida</option>
<option value="Pasaje">Pasaje</option>
<option value="Paseo">paseo</option>	
<option value="Plaza">Plaza</option>
<option value="Ronda">Ronda</option>
<option value="Sector">Sector</option>	
<option value="Urbanizacion">Urbanización</option>
<option value="Travesia">Travesía</option>
<option value="Via">Vía</option>
</select>
</div>

{elseif $field_name eq "address1"}
<div class="required form-group">
<label for="address1">{l s='Address'} <sup>*</sup></label>
<input type="text" class="form-control" name="address1" id="address1" value="{if isset($smarty.post.address1)}{$smarty.post.address1}{/if}" />
</div>
                          
{elseif $field_name eq "address2"}
<div class="form-group is_customer_param">
<label for="address2">{l s='Address (Line 2)'} <sup>*</sup></label>
<input type="text" class="form-control" name="address2" id="address2" value="{if isset($smarty.post.address2)}{$smarty.post.address2}{/if}" />
</div>

{elseif $field_name eq "numero"}
<div class="required form-group">
<label for="numero">{l s='Numero'} <sup>*</sup></label>
<input type="text" class="form-control" name="numero" id="numero" value="{if isset($smarty.post.numero)}{$smarty.post.numero}{/if}" />
</div>

{elseif $field_name eq "puerta"}
<div class="required form-group">
<label for="puerta">{l s='Puerta'} <sup>*</sup></label>
<input type="text" class="form-control" name="puerta" id="puerta" placeholder="En caso de ser un bajo, escribir BAJO" value="{if isset($smarty.post.puerta)}{$smarty.post.puerta}{/if}" />
</div>
Adress.php

Código:
public $address1;
public $numero;
public $puerta;
public $via;

'address1' => 			array('type' => self::TYPE_STRING, 'validate' => 'isAddress', 'required' => true, 'size' => 128),
'via' => 				array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'size' => 64),
'numero' => 			array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'size' => 64),
'puerta' => 			array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'size' => 64),
AdminAddressesController.php

Código:
	public function initPageHeaderToolbar()
	{
		if (empty($this->display))
			$this->page_header_toolbar_btn['new_address'] = array(
				'href' => self::$currentIndex.'&addaddress&token='.$this->token,
				'desc' => $this->l('Add new address', null, null, false),
				'icon' => 'process-icon-new'
			);

		parent::initPageHeaderToolbar();
	}

	public function renderForm()
	{
		$this->fields_form = array(
			'legend' => array(
				'title' => $this->l('Addresses'),
				'icon' => 'icon-envelope-alt'
			),
			'input' => array(
				array(
					'type' => 'text_customer',
					'label' => $this->l('Customer'),
					'name' => 'id_customer',
					'required' => false,
				),
				array(
					'type' => 'text',
					'label' => $this->l('Identification Number'),
					'name' => 'dni',
					'required' => false,
					'col' => '4',
					'hint' => $this->l('DNI / NIF / NIE')
				),	
				array(
					'type' => 'text',
					'label' => $this->l('Numero'),
					'name' => 'numero',
					'required' => false,
					'col' => '4',
					'hint' => $this->l('Numero!')
				),	
				array(
					'type' => 'text',
					'label' => $this->l('Puerta'),
					'name' => 'puerta',
					'required' => false,
					'col' => '4',
					'hint' => $this->l('Puerta!')
				),	
				array(
					'type' => 'text',
					'label' => $this->l('via'),
					'name' => 'via',
					'required' => false,
					'col' => '4',
					'hint' => $this->l('via!')
				),	
				array(
					'type' => 'text',
					'label' => $this->l('Address alias'),
					'name' => 'alias',
					'required' => true,
					'col' => '4',
					'hint' => $this->l('Invalid characters:').' &lt;&gt;;=#{}'
				),
				array(
					'type' => 'text',
					'label' => $this->l('Home phone'),
					'name' => 'phone',
					'required' => false,
					'col' => '4',
					'hint' => Configuration::get('PS_ONE_PHONE_AT_LEAST') ? sprintf($this->l('You must register at least one phone number.')) : ''
				),
				array(
					'type' => 'text',
					'label' => $this->l('Mobile phone'),
					'name' => 'phone_mobile',
					'required' => false,
					'col' => '4',
					'hint' => Configuration::get('PS_ONE_PHONE_AT_LEAST') ? sprintf($this->l('You must register at least one phone number.')) : ''
				),
				array(
					'type' => 'textarea',
					'label' => $this->l('Other'),
					'name' => 'other',
					'required' => false,
					'cols' => 15,
					'rows' => 3,
					'hint' => $this->l('Forbidden characters:').' &lt;&gt;;=#{}'
				),
			),
			'submit' => array(
				'title' => $this->l('Save'),
			)
		);
Todo esto funciona bien, pero ingresa los select cada uno en su campo.

¿Como haría para que ingresara los select de vía, address, número y puerta en el campo de address1?