Discussion: xajax
Afficher un message
Vieux 17/11/2005, 20h47   #3
A.J. Brown
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut [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
  Réponse avec citation
 
Page generated in 0,05872 seconds with 9 queries