History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: ZF-2431
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Matthew Weier O'Phinney
Reporter: Jon Whitcraft
Votes: 1
Watchers: 2
Operations

If you were logged in you would be able to see more operations.
Google issue summary
Zend Framework

Zend_View_Helper_Partial does not support an object to be passed in.

Created: 14/Jan/08 12:01 PM   Updated: 29/May/08 09:07 AM
Component/s: Zend_View
Affects Version/s: 1.5.3
Fix Version/s: 1.5.0

Time Tracking:
Not Specified

File Attachments: 1. Text File Zend_View_Helper_Partial.patch (0.5 kb)

Issue Links:
Related
 

 Public Fields   Internal Project Management Fields   
Resolution Date: 04/Feb/08 10:22 AM
Fix Version Priority: Should Have


 Description  « Hide
I have a model that implements SeekableIterator and Countable so I can use it like an array

When I do a foreach($designs as $design) {} loop I get back the proper value in $design which is an object model containing all the info about a design..but when I do this

<?= $this->partialLoop('view/design.phtml', $this->designs); ?>

I found the problem and noticed that it was doing this when it ran across an object

} elseif (is_object($model)) {
          If (method_exists($mode, 'toArray')) {
                   $view->assign($model->toArray());
          } else {
                   $view->assign(get_object_vars($model));
          }
}

What i did to patch it for my code is when there is no toArray method it just assigns the object to a variable named object.

} elseif (is_object($model)) {
          If (method_exists($mode, 'toArray')) {
                   $view->assign($model->toArray());
          } else {
                   $view->assign('object', $model));
          }
}

Now i understand this is by no means a final solution but it works for now.

here is a link to the thread on the mailing list where it is being discussed.

http://www.nabble.com/Question-about-PartialLoop%28%29-usage-to14739402s16154.html#a14739402



 All   Comments   Work Log   Change History   FishEye   Crucible      Sort Order: Ascending order - Click to sort in descending order
Jon Whitcraft - 14/Jan/08 12:02 PM
Added Patch file.

Pádraic Brady - 23/Jan/08 02:41 AM
Hi Jon,

I'll review the patch - of importance is retaining the current behaviour while allowing specific descendents of some SPL structures a more specialised handling. If you wish the API to be changed without retaining the previous behaviour you will have to suggest this on the mailing list for Matthew's attention since it would create backwards compatibility issues which are best to avoid until the next major revision.


Jon Whitcraft - 23/Jan/08 08:04 AM
I'll do that and see what he says.

Jordan Ryan Moore - 29/Jan/08 10:42 AM
I think the current implementation is actually the best, and the proper solution is to have your model implement a toArray() method.

Matthew Weier O'Phinney - 04/Feb/08 07:27 AM
As discussed on fw-mvc, the approach will be the following:
  • Calling partialLoop() without arguments will return the helper object
  • A method, setObjectKey() will be created; this will allow specifying a view variable to which to assign objects
  • If the objectKey is set, it will be used
  • If no objectKey is sett, if the object implements toArray(), that result will be assigned to the view
  • If neither the objectKey is set nor toArray() implemented, the result of get_object_vars() will be assigned to the view

I will tackle this this week (week of 4 Feb 2008).


Matthew Weier O'Phinney - 04/Feb/08 10:22 AM
Functionality added in revision 7782.