[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]> |
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