[prev in list] [next in list] [prev in thread] [next in thread] 

List:       smarty-dev
Subject:    [SMARTY-DEV] Re: [SMARTY] Help in <can't describe it> appreciated
From:       messju mohr <messju () lammfellpuschen ! de>
Date:       2003-02-23 5:43:41
[Download RAW message or body]

or, for an arbitrary depths of sets:

php:
<?php 

require('../site.php');

/* copied from jason: */
$d = array(
	   2 => array(
		      'enums' => array(6 => 'blue',5 => 'yellow',7 =>'red')
		      ,'name' => 'color'
		      )
	   ,11 => array(
			'enums' => array(15 => 'polyester',13 => 'cotton')
			,'name' => 'material'
			)
	   ,1 => array(
		       'enums' => array(9 => 'S',8=>'M',11=>'L', 10=>'XL')
		       ,'name' => 'size'
		       )
	   );

$d_keys = array(11,1,2); /* or array_keys($d) if order was correct :) */


$smarty->assign('d', $d);
$smarty->assign('d_keys', $d_keys);
$smarty->assign('i', 0);
$smarty->assign('depth', sizeof($d_keys));


$smarty->display('recurse.tpl');

?>



recurse.tpl:

{if ($i<$depth)}
{assign var=d_key value=$d_keys.$i}
<table border="1">

{if ($i<($depth-1))}
{* body of recursion *}

 <tr><th colspan="2">{$d.$d_key.name}</th></tr>
 {foreach from=$d.$d_key.enums item=v}
 <tr>
  <td>{$v}</td>
  <td>
   {math assign=i2 equation="i + 1" i=$i}
   {include file="recurse.tpl" i=$i2}
  </td>
 </tr>
 {/foreach}

{else}
{* last recursion *}

 <tr><th>{$d.$d_key.name}</th></tr>
 {foreach from=$d.$d_key.enums item=v}
 <tr>
  <td>{$v}</td>
 </tr>
 {/foreach}

{/if}
</table>

{else}
{* end of recursion *}

{/if}



have fun
messju

On Sat, Feb 22, 2003 at 09:53:16PM -0600, Jason Sweat wrote:
> php:
> $t = new Smarty;
> 
> $d = array(
>  2 => array(
>   'enums' => array(6 => 'blue',5 => 'yellow',7 =>'red')
>   ,'name' => 'color'
>   )
>  ,11 => array(
>   'enums' => array(15 => 'polyester',13 => 'cotton')
>   ,'name' => 'material'
>   )
>  ,1 => array(
>   'enums' => array(9 => 'S',8=>'M',11=>'L', 10=>'XL')
>   ,'name' => 'size'
>   )
>  );
> $t->assign(array(
>  'mat' => $d[11]
>  ,'col' => $d[2]
>  ,'siz' => $d[1]
>  ));
> $t->display('test.tpl');
> 
> template:
> <table border="1">
> {foreach from=$mat.enums item=cur_mat key=key_mat name=mat}
>  {if $smarty.foreach.mat.first}
>  <tr><th colspan="2">{$mat.name}</th></tr>
>  {/if}
>  <tr valign="top"><td>{$key_mat} => {$cur_mat}</td>
>  <td><table border="1">
>  {foreach from=$siz.enums item=cur_siz key=key_siz name=siz}
>   {if $smarty.foreach.siz.first}
>   <tr><th colspan="2">{$siz.name}</th></tr>
>   {/if}
>   <tr valign="top"><td>{$key_siz} => {$cur_siz}</td>
>   <td><table border="1">
>   {foreach from=$col.enums item=cur_col key=key_col name=col}
>    {if $smarty.foreach.col.first}
>    <tr><th colspan="2">{$col.name}</th></tr>
>    {/if}
>    <tr valign="top"><td>{$key_col} => {$cur_col}
>   {/foreach}
>   </table>
>   </td></tr>
>  {/foreach}
>  </table>
>  </td></tr>
> {/foreach}
> </table>
> 
> ----- Original Message ----- 
> From: "Joscha Feth" <joscha@feth.com>
> To: <smarty-general@lists.php.net>
> Sent: Saturday, February 22, 2003 12:05 PM
> Subject: [SMARTY] Help in <can't describe it> appreciated
> 
> 
> > Please read here, I put together a small description of my problem - all
> > thoughts, ideas, advises, better methods, etc. appreciated (I am nearly
> > getting crazy with this thing)
> > 
> > http://www.feth.com/uploads/case_study1.html
> > 
> > Greets,
> > Joscha

-- 
Smarty Development Mailing List (http://smarty.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic