|
Posted by Jochem Maas on 11/02/05 16:47
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
>>
>>
>>
>>
>>
>
>
Navigation:
[Reply to this message]
|