Page 1 of 1

Creare una proprietà di tipo select con il tag <optgroup> (risolto)

Posted: Thu Jul 24, 2008 1:38 am
by protempore
Ho scorso il forum e mi pare non sia possibile creare in FrontEndUsers una proprietà di tipo select con il tag ...

avrei trovato la maniera per aggirare l'ostacolo, ma sono bloccato dalla mia incapacità di applicare le funzioni di modifica delle variabili Smarty con le Regular Expression... ammesso che la mia idea sia buona... :P

l'idea è questa:

creo la lista delle opzioni della select in questo modo:

Code: Select all

#Europe#=start
Italia
Francia
Germania
...
stop
#Asia#=start
Cina
India
...
stop
in questo modo la variabile "{$control->marker}" genererà un html che conterrà stringhe di questo tipo:

Code: Select all

<option value="start">#Europe#</option><option value="italia">italia</option><option value="stop">stop</option>
la mia idea è di riuscire a sostituire:
'#' con '' con '">'
'stop' con ''

in questa maniera otterrei un output di questo tipo:

Code: Select all

<optgroup label="Europe">
     <option value="Italia">Italia</option>
     <option value="Francia">Francia</option>
     <option value="Germania">Germania</option>
     ...
</optgroup>
<optgroup label="Asia">
     <option value="Cina">Cina</option>
     <option value="India">India</option>
     ...
</optgroup>
dite che è fattibile e, soprattutto, mi dite come fare a ricercare e sostituire le stringhe?

grazie
;)

Re: Creare una proprietà di tipo select con il tag <optgroup> (risolto)

Posted: Thu Jul 24, 2008 2:16 am
by protempore
Eureka!!!

ho risolto da me e funzia  :D :D :D

intento la variabile da modificare non era "{$control->marker}" , bensì: "{$control->control}"

per quento riguarda la ricerca e sostituzione non servivano le regular expression, ma semplicemente combinare più volte il modificatore "replace" di Smarty...

quindi la modifica del template di registrazione di SelfRegistration l'ho messo così:

Code: Select all

<!-- Registration 1 template -->
{$title}
{if isset($message) && $message != ''}
  {if isset($error) && $error != ''}
    <p><font color="red">{$message}</font></p>
  {else}
    <p>{$message}</p>
  {/if}
{/if}
{$startform}
{if $controlcount > 0}
  <center>
  <table width="75%">
{foreach from=$controls item=control}
  <tr>
    <td>{$control->hidden}
    {if $control->color != ''}
      <font color="{$control->color}">{$control->prompt}{$control->marker}</font>
    {else}
      {$control->prompt}{$control->marker}
    {/if}
    </td>
    <td>{$control->control|replace:'<option value="start">#':'<optgroup label="'|replace:'#</option>':'">'|replace:'<option value="stop">stop</option>':'</optgroup>'}</td>
  </tr>
{/foreach}
  </table>
  </center>
<br/>
{/if}
{if isset($captcha)}
{$captcha_title}: {$input_captcha}<br />
  {$captcha}<br />
{/if}
 {$hidden}{if isset($hidden2)}{$hidden2}{/if}{$submit}<br/>
{$msg_sendanotheremail} {$link_sendanotheremail}
{$endform}
<!-- Registration 1 template -->
 
{$control->control|replace:'#':'':'">'|replace:'stop':''}
;)

Re: Creare una proprietà di tipo select con il tag <optgroup> (risolto)

Posted: Thu Jul 24, 2008 2:56 am
by protempore
ulteriori modifiche:
{$control->control|replace:'#':'':'">'|replace:'stop':''|replace:'-':'choose...'|replace:'*"':'" selected="selected"'|replace:'*<':'<'}

con queste modifiche è possibile inserire la prima opzione della select "vuota"...

con un "-" posto all'inizio delle opzioni previste...

Code: Select all

-
Mr.
Ms.
si ottiene un codice di questo tipo:

Code: Select all

<select name="m3input_courtesy">
   <option value="">choose...</option>
   <option value="Mr.">Mr.</option>
   <option value="Ms.">Ms.</option>
</select>
mentre, se si vuole rendere preselezionata una delle opzioni impostate, basta mettere un "*" come suffisso dell'opzione...

Code: Select all

Italia
Francia*
Germania
Gran Bretagna
si ottiene un codice di questo tipo:

Code: Select all

<select name="m3input_addresscountry">
    <option value="Italia">Italia</option>
    <option value="Francia" selected="selected">Francia</option>
    <option value="Germania">Germania</option>
    <option value="Gran Bretagna">Gran Bretagna</option>
</select>

Re: Creare una proprietà di tipo select con il tag <optgroup

Posted: Sat Nov 03, 2012 3:46 pm
by nervino
A 4 anni di distanza: Grazie!