2010-02-16 12 views
5

¿Cómo puedo generar una lista de selección con el año dado hasta este año? lo hice¿Cómo generar año en Smarty?

{assign var=thisyear value=$smarty.now|date_format:"%Y"} 
{if !$firstyear} 
{assign var=firstyear value="2003"} 
{/if} 

{if !$loop}{assign var=loop value=$thisyear}{/if} 
<select name='{$id|default:year}' id={$id|default:year} style='width:70px;'> 

{section name=yearValue max=$year start=$firstyear loop=$thisyear step=-1} 
    <option{if $year==$smarty.section.yearValue.index} selected="selected"{/if}>{$smarty.section.yearValue.index}</option> 
{/section} 

</select> 

unfotunatly Esto produce 0 hasta el 2003 pero quiero que genera 2003 hasta 2010, ¿cómo puedo hacer eso?

Respuesta

1
{section name=years start=2003 loop=2011 step=1} 
    {$smarty.section.years.index} 
{/section} 
+0

Pero cada año tengo que hacer cambios – streetparade

+2

Asigna los valores 'start' y' loop' de PHP, en lugar de incorporar lógica de plantilla compleja para hacer lo mismo. – karim79

0
{assign var=firstyear value="2003"} 
{assign var=thisyear value=$smarty.now|date_format:"%Y"} 

{section name=yearValue start=$thisyear loop=$firstyear step=-1} 
    {$smarty.section.yearValue.index} 
{/section} 
4
{assign var=thisyear value=$smarty.now|date_format:"%Y"} 
    {assign var=endYear value=$thisyear+6} 
    <select> 
     {section name=yearValue start=$thisyear loop=$endYear step=1}<option>{$smarty.section.yearValue.index}</option> 
     {/section} 
    </select> 
0

{html_select_date start_year = "+ 0" end_year = "+ 0" field_order = "DMA" day_value_format = "% 02d"}

si desea establecer este año solo en el año de inicio si da valor en menos como "-1" que el año anterior también.