Boas,
Ando à algum tempo a habituar-me a usar velocity para fazer os layout dinamicos das paginas para a web, mas o problema é que o velocity é um bocado limitado quando se trata de ciclos.
Por exemplo, como posso fazer uma matriz dinamica 9x9 (tabela html) que imprima os numero de 1 a 81 (9 x 9) em cada espaço da celula… como faço isto apenas com o ciclo foreach?
A ideia é fica algo como isto:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
1 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 |
2 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
3 | 19 | 20 … etc
…
9 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 |
Fica aqui o desafio para quem quiser aceitar…
PEACE!
Utilize o “range” do #foreach:
<table border="1">
#foreach ($y in [1..9])
<tr>
#foreach ($x in [1..9])
<td>$x</td>
#end
</tr>
#end
</table>
isso deve funcionar!
Rafael
Isso o que vai fazer é preencher 9 vezes os numeros de 1 a 9 e não é essa a ideia… é a ideia é preencher os numeros de 1 a 81 dentro de uma matriz…
ok… entao eh so vc mulplicar $y * $x e vc tera os numeros no format que desejar!
Rafael
Vc estava a dizer assim: ?
<table border="1">
#foreach ($y in [1..9])
<tr>
#foreach ($x in [1..9])
#set($val = $x * $y)
<td>$val</td>
#end
</tr>
#end
</table>
Se for isto continua a nao ser assim que queria… veja o exemplo que coloquei logo no inicio… os numeros têm q ir mesmo de 1 a 81 (todos), só que 9 numeros por linha… do 1 até ao 81… numa matriz de 9x9…
E assim?
<table>
<tr>
#foreach ($i in [1..81])
#if ($i %9 == 0)</tr><tr>#end
<td>$i</td>
#end
</tr>
</table>
Rafael
muito bem Rafael, é isso mesmo… a formação é que nao ficou mto bem feita… a sua primeira linha so tem 8 numeros…
eu fiz assim:
<table>
<tr>
#set ($count = 0)
#foreach ($item in [1..9])
#foreach ($item2 in [1..9])
#set ($count = $count + 1)
<td>$count</td>
#end
</tr>
#end
</table>
PEACE!
kdashu
Agosto 22, 2012, 1:56pm
#8
Galera, estou procurando uma solução parecida com este caso, porém ao inves de apresentar números montará radiobuttons numa matriz 5l x 2c.
Os radios estão sendo colocados todos na vertical sem problemas de momento.
Possuo este código:
[code]
#if ($campo.opcoes)
#foreach( $opt in $campo.getOpcoesArray() )
<tr>
<td nowrap="nowrap" class="labelFieldGrid">
<input type="radio" name="${campo.nome}" value="$opt.codigo" ${campo.status} onClick="$metodo" #if ($opt.codigo == $campo.valor) CHECKED #end>$opt.nome
</td>
</tr>
#end
#end
[/code]
Gostaria de Add dentro do laço um novo
com o proximo input. Os inputs são formados a partir de uma lista String chamada ‘opcoes’, e são separados por “||” dentro desta string.
Tentei iterar o contador $opt para imprimir no outro
mas sem sucesso, tipo:
<tr>
<td><input type="radio" name="${campo.nome}" value="$opt.codigo" ${campo.status} onClick="$metodo" #if ($opt.codigo == $campo.valor) CHECKED #end>$opt.nome </td>
#set ($opt = $opt +1)
<td><input type="radio" name="${campo.nome}" value="$opt.codigo" ${campo.status} onClick="$metodo" #if ($opt.codigo == $campo.valor) CHECKED #end>$opt.nome </td>
<tr>
A lista sai apenas duplicada na outra coluna…
Alguem sabe como poderia fazer para que todos radios fossem colocados nessa matriz 5 x 2 ?