Re: [SMARTY] looping over an array of objects

Jochem Maas <[email protected]>
Newsgroups gmane.comp.php.smarty.general
Message-ID <[email protected]>
Erik Schmitt wrote:
> Hello,
> 
> if you want to iterate over an array holding propel objects: it works.
> 
> I read your question on the propel list and I am not sure if I understood
> it correctly. Is it your intention to "convert" values of propel objects 
> into an multidimensional-array?
> 
> Anyway, this works:
> 
> {foreach from=$USER_ARRAY item=USER}
> 	{$USER->getName}<br/>
> {/foreach}
> 
> (And this will not work: {$USER->getCompany()->getName()} )

can any of the smarty devs indicate whether is any intention at all
of supporting this 'dereferenced' syntax? (possibly in whatever smarty3
becomes).

I for one would very much welcome it... but I also understand that
there are plenty of people, including the smarty devs that don't see
this as:

a, a priority
b, desirable in a templating system primariliy deisgned as a tool to
enable ['less' technical] graphic designers to better to their work.

rgds,
jochem

> 
> - Erik
> 
> 
> Am Dienstag, 1. November 2005 14:40 schrieb Isaac Vetter:
> 
>>I'm setting up propel (http://propel.phpdb.org/), which is an 
>>object-relational mapper, like DB_Object.  So, database queries return 
>>objects, many of which need to be passed to a smarty template for 
>>display.  I could manually move each relevant property into an array 
>>($ary[$i]['id'] = $aryOfObj[$i]->getId()), but ... I really don't want 
>>to have to do that.
>>
>>The smarty documentation implies that an array of objects can be looped 
>>over, if the array is assign()'d or assign_by_ref()'d.  This doesn't 
>>seem to be working for me.  Can someone confirm that this works?
>>
>>If this doesn't work, I'm thinking of writing/using code that uses 
>>reflection to automatically call property getters to create the 
>>smarty-required multi-dimensional arrays, any suggestions?
>>
>>Much Thanks,
>>
>>Isaac Vetter
>>
>>
>>-----------------------------------------
>>Smarty allows access to PHP objects through the templates. There are two 
>>ways to access them. One way is to register objects 
>><http://smarty.php.net/manual/en/api.register.object.php> to the 
>>template, then use access them via syntax similar to custom functions. 
>>The other way is to assign objects 
>><http://smarty.php.net/manual/en/api.assign.php> to the templates and 
>>access them much like any other assigned variable. The first method has 
>>a much nicer template syntax. It is also more secure, as a registered 
>>object can be restricted to certain methods or properties. However, *a 
>>registered object cannot be looped over or assigned in arrays of 
>>objects*, etc. The method you choose will be determined by your needs, 
>>but use the first method whenever possible to keep template syntax to a 
>>minimum.
>>
>>http://smarty.php.net/manual/en/advanced.features.php#advanced.features.objects
>>
>>
>>
>>
>>
> 
> 

-- 
Smarty General Mailing List (http://smarty.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.