[SMARTY] looping through array of objects not working
Hello,
I know this was discussed earlier in the mailing list, but it is NOT working
for me. I have verified that the method calls work through my
business-logic, but I cannot us the objects in the template. I can,
however, use the objects when they are NOT within an array.
For example, I have the following template code:
----BEGIN------------------
{foreach from="items" item="itemobj"}
<tr class="{cycle values="row1,row2"}">
<td><input type="checkbox" name="item[{$itemobj->getId()}]"/></td>
<td>{$itemobj->getSku()}</td>
<td>{$itemobj->getName()|escape:"htmlall"}</td>
<td>{$itemobj->getRevised()|date_format:"%D"}</td>
<td>{$itemobj->getCreated()|date_format:"%D"}</td>
</tr>
{foreachelse}
<tr>
<td colspan="8">No Records Found</td>
</tr>
{/foreach}
----END--------------------
$items contains an array of InventoryItem objects. I've verified this using
print_r() in the logic just before the assign() statement is done.
The first occurrence of any method call to $itemobj (in this case,
$itemobj->getId()) results in a "Call to a member function on a non-object"
fatal error. However, if I call the method from the logic side, it works
fine.
Also, I've verified that objects which are assigned directly (i.e. not
within an array) are working fine.
I found a work-around to this in PHP5 using the ArrayAccess interface, but
our server is running PHP4.4 and I do not want to have to upgrade.
I have the latest release of Smarty installed. This particular problem is
occurring on a windows machine (Development environment), and I have not
tested it on the production Linux machine.
Why isn't this working?
A.J. Brown
BitNotion Technology
|