2010-02-16 7 views
5

Comment puis-je générer une liste de sélection avec l'année donnée jusqu'à cette année? Je l'ai faitComment générer une année dans 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 ce produit 0 à 2003, mais je veux qu'il génère 2003 à 2010 comment puis-je faire?

Répondre

4

Jetez un oeil à html_select_date

+0

Merci pour les informations – streetparade

+0

De rien :-) – Htbaa

+0

Il est honteux que vous ne pouvez pas définir de nom personnalisé pour la sélection en utilisant cette commande; / – Szorstki

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

Mais chaque année je dois faire des changements – streetparade

+2

Affectez les valeurs 'start' et' loop' de PHP, plutôt que d'incorporer une logique de template complexe pour faire de même. – 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 = "DMY" day_value_format = "% 02d"}

si vous voulez cette année seulement mettre en début d'année si vous donnez la valeur en moins comme "-1" que cela montre l'année précédente aussi.