Re: [SMARTY] looping over an array of objects
Isaac Vetter <[email protected]>
| Newsgroups | gmane.comp.php.smarty.general |
|---|---|
| Organization | Department of Mathematics, Purdue University |
| Message-ID | <[email protected]> |
Tom, Erik, boots;
Thank you for your help. I changed two things to get it working.
1) I upgraded smarty to 2.6.10, but I don't know if this was needed or not.
2) I was making a stupid syntax error by not including the parentheses
on property calls from an object passed in with assign().
Erik, I'd love to hear about your experiences with propel and smarty,
have you seen any projects that attempt to link them (ie. form generation?).
Thanks again,
Isaac
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()} )
>
>- 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